Exemplo n.º 1
0
int main()
{
    
    printf("\n\nEnter the values of a and b - ");
    scanf("%d%d",&a,&b);
    
    printf("\nEnter the prime number - ");
    scanf("%d",&p);
    
    
    printf("\nEnter the values of xp and yp - ");
    scanf("%d%d",&xp,&yp);
    
    na = rand()%10+2;
    printf("\nValue of Na - %d",na);
    nb = rand()%10+2;
    printf("\nValue of Nb - %d",nb);
    
    int public_key[4], private_key[4];
    publickey(na);
    public_key[0] = xq;
    public_key[1] = yq;
    
    printf("\nPublic key of A - (%d ,%d)\n\n",public_key[0],public_key[1]);
    
    publickey(nb);
    public_key[2] = xq;
    public_key[3] = yq;
    
    printf("Public key of B - (%d ,%d)\n\n",public_key[2],public_key[3]);
    
    secretkey(public_key[2], public_key[3], na);
    private_key[0] = xq;
    private_key[1] = yq;
    
    printf("\nShared Secret key of A - (%d ,%d)\n\n",private_key[0],private_key[1]);
    
    secretkey(public_key[0], public_key[1], nb);
    private_key[2] = xq;
    private_key[3] = yq;
    
    printf("\nShared Secret key of B - (%d ,%d)\n\n",private_key[2],private_key[3]);
    
    
    
    
    return 0;
    
}
int main()
{
	int p,g,a,b,t;
	unsigned long long int A, B, secret1, secret2;
	printf("*********Klasik Diffie Hellman Anahtar Degisimi*********\n\n");
	printf("NOT  :  'g' bir tamsayi, 'p' bir asal sayi ve 'p'-1>'g' olmalidir. \n\n");
	
	tekrar2:
	printf("Lutfen ortak 'g' taban degerini giriniz  :  "); 
	scanf("%d", &g);
	tekrar:
	printf("Lutfen ortak 'p' mod degerini giriniz    :  "); 
	scanf("%d", &p);
	
	t=asal(p);
	if(t==1)
	goto tekrar;
	t=aralarindaasal(g,p);
	if(t==1)
	goto tekrar2;
	
	printf("\n\tg  :  %d\n\tp  :  %d\n", g,p);
	
	printf("\nClient gizli degerini giriniz  :  "); 
	scanf("%d", &a);
	printf("Server gizli degerini giriniz  :  ");
	scanf("%d", &b);
	
	printf("\n\ta  :  %llu\n\tb  :  %llu\n", a,b);

	A=publickey(g,a,p);
	B=publickey(g,b,p);
	
	printf("\nPublic Deger Hesaplama=>    A  :  g^a mod p\n");
	printf("                            B  :  g^b mod p\n");
	printf("\nClient public degeri  =>    A  :  %d^%d mod %d\n", g,a,p);
	printf("Server public degeri  =>    B  :  %d^%d mod %d\n\n", g,b,p);
	
	printf("\tA  :  %llu\n\tB  :  %llu\n\n", A,B);

	printf("Gizli Deger Hesaplama => Client  :  B^a mod p  =  g^ba mod p\n");
	printf("                         Server  :  A^b mod p  =  g^ab mod p\n\n");
	printf("Client gizli degeri   =>    s1   :  %llu^%d mod %d\n", B,a,p);
	printf("Server gizli degeri   =>    s2   :  %llu^%d mod %d", A,b,p);
	secret1=secretkey(B,a,p);
	secret2=secretkey(A,b,p);
	
	printf("\n\n\ts1  :  %llu\n\ts2  :  %llu\n", secret1,secret2);
	
	if(secret1!=secret2)
	printf("\n\n's' degerleri esit cikmadi. Islemlerde bir sorun olabilir. \nKontrol ettikten sonra, tekrar deneyiniz.\n\n");
	
	else
	printf("\nOrtak gizli deger     =>    s  :  %llu",secret1);
	
	printf("\n\nClient'in Bildigi Degerler  :  g, p, a, A, B, s\n");
	printf("Server'in Bildigi Degerler  :  g, p, b, B, A, s");
	
	printf("\n\n\n\t*******Tolga Akkapulu*******\n\thttp://www.tolgaakkapulu.com");
	
	getch();
}
Exemplo n.º 3
0
void FreenetMessageInserter::StartPrivateInsert(const int localidentityid, const int recipientidentityid, const std::string &message)
{
    RSAKeyPair rsa;
    std::string idstr("");
    std::string publickey("");
    std::string rsapublickey("");
    std::string data("");
    std::string datalengthstr("");
    DateTime now;
    FCPv2::Message mess("ClientPut");

    LoadLocalIdentityPrivateKey(localidentityid);

    SQLite3DB::Statement st=m_db->Prepare("SELECT PublicKey, RSAPublicKey FROM tblIdentity WHERE IdentityID=?;");
    st.Bind(0,recipientidentityid);
    st.Step();
    if(st.RowReturned())
    {
        st.ResultText(0,publickey);
        st.ResultText(1,rsapublickey);
    }

    if(publickey!="" && rsapublickey!="" && rsa.SetFromEncodedPublicKey(rsapublickey))
    {
        if(m_identitykeys[localidentityid]!="")
        {
            std::string indexstr("0");
            FreenetMessage fm;

            fm["type"]="privatemessage";
            fm["recipient"]=publickey;
            fm["sentdate"]=now.Format("%Y-%m-%d %H:%M:%S");
            rsa.Encrypt(message,fm.Body());
            data=fm.GetMessageText();

            StringFunctions::Convert(localidentityid,idstr);
            StringFunctions::Convert(data.size(),datalengthstr);
            StringFunctions::Convert(GetNextMessageIndex(localidentityid,now),indexstr);

            st=m_db->Prepare("INSERT INTO tblInsertedMessageIndex(LocalIdentityID,Date,MessageIndex) VALUES(?,?,?);");
            st.Bind(0,localidentityid);
            st.Bind(1,now.Format("%Y-%m-%d"));
            st.Bind(2,indexstr);
            st.Step();

            mess["URI"]="SSK@"+m_identitykeys[localidentityid].substr(4)+m_messagebase+"|"+now.Format("%Y-%m-%d")+"|Message-"+indexstr;
            mess["Identifier"]=m_fcpuniqueidentifier+"|"+idstr+"|"+now.Format("%Y-%m-%d")+"|"+indexstr+"|"+mess["URI"];
            mess["RealTimeFlag"]="true";
            mess["UploadFrom"]="direct";
            mess["PriorityClass"]=m_insertpriority;
            mess["ExtraInsertsSingleBlock"]="0";
            mess["DataLength"]=datalengthstr;
            mess["Metadata.ContentType"]="";

            m_fcp->Send(mess);
            m_fcp->Send(std::vector<char>(data.begin(),data.end()));

            m_log->Debug("FreenetMessageInserter::StartInsert started insert of private message "+mess["Identifier"]);
        }
    }

}