繁体   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