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(); }
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"]); } } }