【发布时间】:2010-11-29 08:50:14
【问题描述】:
这只是出于好奇。我们知道,对于密码学应用,两个大素数(超过 100 位)相乘以形成公钥的一部分。那么哪种 Microsoft.NET 数字类型可以存储数百位数的最大素数?换句话说,哪种数字数据类型可以容纳 .NET 中的最大整数?我知道使用 8 个字节的 System.Double 可以存储 (1.79769313486232 × 10^308) 的最大值 - 这可能容纳 309 位。但是,System.Decimal 使用 16 个字节,最多可以存储 79228162514264337593543950335,这只有 29 个十进制数字(比 Double 少?)
谢谢, 查克。
【问题讨论】:
-
“每个计算机程序员都应该知道的关于浮点运算的知识” - blogs.sun.com/darcy/resource/Wecpskafpa-StanfordIcme500.pdf
-
对于 RSA,您也需要较低的有效数字(您正在对 n 进行整数计算),因此您不能使用任何浮点类型(Double,Decimal,...)但需要一个足够大的整数。