【发布时间】:2014-07-09 11:05:47
【问题描述】:
由于某种原因:显示如下:
3 to the power of x mod 17 is 19. This is called v.
Shared person a (v):
19
并且在脚本中是这样的(该脚本用于描述 Diffie-Hellman 密钥交换算法。):
$p="17";
$g="3";
$px=gmp_nextprime(rand());
$x=gmp_strval($px);
$a=$g^$x%$p;
echo "$g to the power of x mod $p is $a. This is called v.<br>";
echo "<br>Shared person a (v):<br>";
echo "$a <br>";
想知道这是否是一种 PHP 故障,因为:
if{x mod y=z}, z<y
现在我的问题: 如何解决这个问题? 我做错了什么吗? 这是 PHP 故障吗?
(我知道代码需要清理。)
补充说明: $x = 2047401017
【问题讨论】:
-
你为什么不使用
gmp_powm()?尤其是指数那么大。 -
我遇到的第二个问题:数字太大。 PHP 语言本身只支持最大 2^31-1 的整数大小。我不认为 3^(20 亿)对我有好处。
-
这正是你应该使用 gmp 的原因。
标签: php operators modulo diffie-hellman