簡體   English   中英

在 php 中處理大量數字輸出 0

[英]Working with large numbers in php is outputing 0

我正在嘗試做一些 Diffie-Hellman,它適用於較小的生成器、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;

您可以為此使用 GMP 庫( https://www.php.net/manual/en/ref.gmp.php ):

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;

Output:

Ga og Gb 的計算

用戶A共享價值
877^517 模 80182923 = 79127908

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM