我正在对用户的输入进行加密,以生成密码字符串。但是一行代码在框架的不同版本中给出了不同的结果。用户按下键值的部分编码:
按键: 1.变量ascii为49。经过计算后的'e‘和'n’的值:
e = 103,
n = 143,
Math.Pow(ascii, e) % n上述代码的结果:
.NET 3.5中的
Math.Pow(ascii,e) %n
提供9.0.
Math.Pow(ascii,e) %n
提供77.0.
Math.Pow()在两个版本中都给出了正确(相同)的结果。
原因是什么?有解决方案吗?
发布于 2014-01-31 22:08:37
也许最好自己只用整数算术来计算它。类似于:
int n = 143;
int e = 103;
int result = 1;
int ascii = (int) 'a';
for (i = 0; i < e; ++i)
result = result * ascii % n;您可以将性能与其他答案中发布的BigInteger解决方案的性能进行比较。
https://stackoverflow.com/questions/21481764
复制相似问题