簡體   English   中英

在 C# 中,如何存儲大素數?

[英]In C#, how do I store large prime number?

今天是個好日子,

我正在嘗試在 C# 中實現 Diffie-Hellman 密鑰交換協議。 首先,這是一個測試項目 我知道我應該將其用於任何實際應用。 我這樣做只是為了多了解一點。

現在,根據這個 RFC (3526),我需要使用質數 P= 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }和生成器 G= 2

https://datatracker.ietf.org/doc/html/rfc3526#page-6

但是質數太大了! 即使對於 BigInteger !

我現在如何進行?

編輯:

我認為它太大了,因為這段代碼返回一個負值:

string hexString = "...";
BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
Console.WriteLine("Converted 0x{0}\nto\n{1}.", hexString, number);

https://dotnetfiddle.net/Ffr7Ip

BigInteger.Parse將十六進制字符串轉換為二進制。 如果二進制數以1開頭,則表示該數字是有符號的。 這就是為什么它給你一個負數。 正如@canton7 所說,只需在前面加上0就可以了。

暫無
暫無

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

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