簡體   English   中英

C#中的1024位Diffie-Hellman

[英]1024-bit Diffie-Hellman in C#

所以我正在開發一個項目,將C#客戶端與現有的服務器技術連接起來。 其中一個要求是使用Diffie-Hellman進行密鑰交換。

我們已知公共P和G,我需要生成一個1024位的公鑰才能發送到服務器。

以下是在C ++中使用OpenSSL在服務器端使用的。 目前我在通過P / Invoke調用的本機DLL中使用相同的代碼,它也可以工作。 如果可能的話,我寧願消除本機DLL依賴。

char publicKey[128];
char P[128]; //this is set to a static 128-byte value, omitting for brevity
unsigned long G = 2;

DH* dh = DH_new();
dh->p = BN_new();
dh->g = BN_new();

BN_set_word(dh->g, G);
BN_bin2bn(P, 128, dh->p);
if(DH_generate_key(dh))
{
   BN_bn2bin(dh->pub_key, publicKey);
}

這會生成一個1024位的公鑰。

我已經嘗試過在BouncyCastle中使用DH類,但無論出於何種原因我都無法給它一個1024位密鑰,它想給我一個960位密鑰。 可能是因為我真的不知道自己在做什么。 我找不到關於如何使用類的實際解釋方式。

是否可以使用BouncyCastle DH類與上面發布的OpenSSL DH代碼一樣工作? 如果沒有,是否有另一個更好的C#實現?

這是一個關於CodeProject的工作代碼示例+文章,評分很高:

http://www.codeproject.com/Articles/24632/Shared-Key-Generation-using-Diffie-Hellman

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM