我正在做一个关于RSA加密的程序,我现在遇到了问题。我只能加密1个字母的消息(但应该这样做)。 我认为我需要做的是将消息拆分为一个数组,然后使用像array_walk这样的命令,逐个查看每个字母的代码,然后使用implode将它们全部重新组合在一起。
<?php
$p; //Først kalder jeg alle variablerne
$q;
$N;
$e;
$d;
$message;
$p = 2; //Derefter definerer jeg dem
$q = 11;
$N = $p*$q;
$e = 7;
$d = 13;
$message = "f";
echo "Public key (".$e.", ".$N.")<br><br>"; //Echoer min puclic key
bestående af e og N
for ($i1 = 0; $i1 < strlen($message); $i1++) {
$char1 = $message[$i1];
if (ctype_upper($char1)) { //Checker om bogstaverne er store
$range1 = 65-1; //Hvis de er, defineres range til 65-1
} else if (ctype_lower($char1)) { //Checker om bogstaverne er små
$range1 = 97-1; //Hvis de er, defineres range til 97-1
}
$encryptedMessage = ord($char1) - $range1; //Konverterer beskeden til den
tilsvarende ascii værdi - range
echo "Beskeden ".$message." laves om til tallet ".$encryptedMessage;
}
echo "<br>";
$ePowEncrypted = pow($encryptedMessage, $e);
echo "e = ".$ePowEncrypted."<br>";
$modEncrypted = fmod($ePowEncrypted, $N);
echo "String mod N = ".$modEncrypted."<br><br><br>";
echo "Private key (".$d.", ".$N.")<br><br>";
for ($i2 = 0; $i2 < strlen($message); $i2++) {
$char2 = $message[$i2];
if (ctype_upper($char2)) {
$range2 = 90-1;
} else if (ctype_lower($char2)) {
$range2 = 122-1;
}
$decryptedMessage = ord($char2) - $range2;
$shiftedChar = chr((($decryptedMessage) % 26) + $range2);
}
$ePowDecrypted = pow($encryptedMessage, $d);
$modDecrypted = fmod($ePowDecrypted, $N);
echo "Tallet ".$modDecrypted." laves om til bogstavet ".$shiftedChar;
?>
这就是我尝试制作功能的原因
<?php
function encryptRSA($message) {
for ($i1 = 0; $i1 < strlen($message); $i1++) {
$char1 = $message[$i1];
if (ctype_upper($char1)) { //Checker om bogstaverne er store
$range1 = 65-1; //Hvis de er, defineres range til 65-1
} else if (ctype_lower($char1)) { //Checker om bogstaverne er små
$range1 = 97-1; //Hvis de er, defineres range til 97-1
}
$encryptedMessage = ord($char1) - $range1; //Konverterer beskeden
til den tilsvarende ascii værdi - range
echo "Beskeden ".$message." laves om til tallet
".$encryptedMessage;
return $encryptedMessage;
}
}
$message = 'a';
encryptRSA($message);
?>
<?php
$p; //Først kalder jeg alle variablerne
$q;
$N;
$e;
$d;
$message;
$p = 2; //Derefter definerer jeg dem
$q = 11;
$N = $p*$q;
$e = 7;
$d = 13;
$message = "f";
echo "message = ".$message;
echo "<br><br>";
echo "Public key (".$e.", ".$N.")<br><br>"; //Echoer min puclic key bestående af e og N
include 'encryptFunction.php';
$encryptedText = encryptRSA($message);
echo "Beskeden ".$message." laves om til tallet ".$encryptedText;
echo "<br>";
$ePowEncrypted = pow($encryptedText, $e);
echo "e = ".$ePowEncrypted."<br>";
$modEncrypted = fmod($ePowEncrypted, $N);
echo "String mod N = ".$modEncrypted."<br><br><br>";
echo "Private key (".$d.", ".$N.")<br><br>";
for ($i2 = 0; $i2 < strlen($message); $i2++) {
$char2 = $message[$i2];
if (ctype_upper($char2)) {
$range2 = 90-1;
} else if (ctype_lower($char2)) {
$range2 = 122-1;
}
$decryptedMessage = ord($char2) - $range2;
$shiftedChar = chr((($decryptedMessage) % 26) + $range2);
}
$ePowDecrypted = pow($encryptedText, $d);
$modDecrypted = fmod($ePowDecrypted, $N);
echo "Tallet ".$modDecrypted." laves om til bogstavet ".$shiftedChar;
?>
包含该功能的文件
<?php
function encryptRSA($message) {
for ($i1 = 0; $i1 < strlen($message); $i1++) {
$char1 = $message[$i1];
if (ctype_upper($char1)) { //Checker om bogstaverne er store
$range1 = 65-1; //Hvis de er, defineres range til 65-1
} else if (ctype_lower($char1)) { //Checker om bogstaverne er små
$range1 = 97-1; //Hvis de er, defineres range til 97-1
}
$encryptedMessage = ord($char1) - $range1; //Konverterer beskeden til den tilsvarende ascii værdi - range
}
return $encryptedMessage;
}
?>