我正在创建一个C#控制台应用程序,以便查找素数并将其用于RSA编码。不幸的是,最新标准(关于编码密钥)大约是2048位。我试过biginteger,但我能算出的最大值是2 ^ 1023。可以使用更大的数字吗?
答案 0 :(得分:3)
BigInteger没有上限(仅受可用内存或其下层字节数组的最大分配大小限制)。
您的程序抛出异常,因为方法Math.Pow(x,y)返回double而double不能表示2 ^ 1024或更大的数字。
要创建更大的数字,请使用此方法
var big = BigInteger.Pow(2, 2048);
或者使用BigInteger构造函数,它采用字节数组或BigInteger.Parse()方法。