Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中处理大数时输出0_Php - Fatal编程技术网

在php中处理大数时输出0

在php中处理大数时输出0,php,Php,我正在尝试做一些diffie hellmann,它可以很好地处理较小的生成器、mod和私钥。但当数字变大时,它只输出零。我看过其他没有真正解决办法的帖子。它可以在php.ini中配置吗 $gen = 877; $mod = 80182923; $saltA = 517; $saltB = 1517; echo "calculation of Ga og Gb<br>"; echo "<br>user A shareable value&

我正在尝试做一些diffie hellmann,它可以很好地处理较小的生成器、mod和私钥。但当数字变大时,它只输出零。我看过其他没有真正解决办法的帖子。它可以在php.ini中配置吗

$gen = 877;
$mod = 80182923;

$saltA = 517;
$saltB = 1517;


echo "calculation of Ga og Gb<br>";
echo "<br>user A shareable value<br>";
$calculatedSecretKeyA =  ($gen**$saltA) % $mod;
echo $gen . "^" . $saltA . " mod " . $mod . " = " . $calculatedSecretKeyA;

echo "<br>user B shareable value<br>";
$calculatedSecretKeyB = ($gen**$saltB) % $mod;
echo $gen . "^" . $saltB . " mod " . $mod . " = " . $calculatedSecretKeyB;


echo "<br>user As calc of secret key <br>";
$calcKeyA =  ($calculatedSecretKeyB**$saltA) % $mod;
echo $calculatedSecretKeyB . "^" . $saltA . "" . " mod " . $mod . " = " . $calcKeyA;


echo "<br><br>user Bs calc of secret key <br>";
$calcKeyB =  ($calculatedSecretKeyA**$saltB) % $mod;
echo $calculatedSecretKeyA . "^" . $saltB . "" . " mod " . $mod . " = " . $calcKeyB;



echo "<br><br>bruteforcer A calc of secret key <br>";
$calcKeyB =  ($calculatedSecretKeyA**7) % $mod;
echo $calculatedSecretKeyA . "^" . 7 . "" . " mod " . $mod . " = " . $calcKeyB;
$gen=877;
$mod=80182923;
$saltA=517;
$saltB=1517;
echo“计算Ga og Gb
”; echo“
用户可共享值
”; $calculatedSecretKeyA=($gen**$saltA)%$mod; echo$gen。"^" . $萨尔塔。“mod”$摩登派青年" = " . $计算secretkeya; echo“
用户B可共享值
”; $calculatedSecretKeyB=($gen**$saltB)%$mod; echo$gen。"^" . $索尔特。“mod”$摩登派青年" = " . $计算secretkeyB; echo“
用户作为密钥的计算
”; $calcKeyA=($calculatedSecretKeyB**$saltA)%$mod; echo$calculatedSecretKeyB。"^" . $萨尔塔。"" . “mod”$摩登派青年" = " . $卡尔卡亚; echo“

用户计算密钥
”; $calcKeyB=($calculatedSecretKeyA**$saltB)%$mod; echo$calculatedSecretKeyA。"^" . $索尔特。"" . “mod”$摩登派青年" = " . $calcKeyB; echo“

强制计算密钥
”; $calcKeyB=($calculatedSecretKeyA**7)%$mod; echo$calculatedSecretKeyA。"^" . 7."" . “mod”$摩登派青年" = " . $calcKeyB;
您可以使用GMP库进行此操作():

echo“计算Ga og Gb
”; echo“
用户可共享值
”; $calculatedSecretKeyA=gmp\u mod(gmp\u pow($gen,$saltA),$mod); echo$gen。"^" . $萨尔塔。“mod”$摩登派青年" = " . $计算secretkeya;
输出:

计算Ga og Gb

用户A可共享值
877^517 mod 80182923=79127908

echo "calculation of Ga og Gb<br>";
echo "<br>user A shareable value<br>";
$calculatedSecretKeyA = gmp_mod ( gmp_pow ($gen, $saltA), $mod);
echo $gen . "^" . $saltA . " mod " . $mod . " = " . $calculatedSecretKeyA;