需要帮助从我的函数返回变量

时间:2017-04-27 18:44:04

标签: php function encryption return rsa

我正在做一个关于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;
}

?>

0 个答案:

没有答案