RSA加密和解密

时间:2011-07-07 14:19:53

标签: php encryption

即时为学校做作业,我们必须使用rsa来加密并将数据(例如密码)发送到服务器以进行用户身份验证我正在使用php类来进行 phpseclib,纯PHP RSA实现!

我可以加密文字

<?php
include('Math/BigInteger.php');
include('Crypt/Hash.php');
include('Crypt/RSA.php');
ini_set('max_execution_time', 0);

$rsa = new Crypt_RSA();
extract($rsa->createKey());

$plaintext = 'terrafrost';

$rsa->loadKey($privatekey);
$ciphertext = $rsa->encrypt($plaintext);


echo"<form action=\"dec.php\" method=\"post\"><input name=\"ciphertext\" type=\"text\"  value=\"".$ciphertext."\"/>";

echo"<input name=\"publickey\" type=\"text\"  value=\"".$publickey."\"/>";
echo"<input type=\"submit\" name=\"button\" id=\"button\" value=\"Submit\" /></form>";


?>

但是当我将加密代码发送到另一个页面并尝试解密时,我会收到错误

  

警告:unpack()[function.unpack]:   N型:输入不够,需要4个   3在C:\ wamp \ www \ RSA \ Crypt \ RSA.php上   第972行

     

警告:extract()需要参数1   是数组,布尔值给出   C:\ wamp \ www \ RSA \ Crypt \ RSA.php在线   972

     

注意:未定义的变量:长度为   C:\ wamp \ www \ RSA \ Crypt \ RSA.php在线   973

     

警告:unpack()[function.unpack]:   N型:输入不够,需要4个   0:在C:\ wamp \ www \ RSA \ Crypt \ RSA.php上   第974行

     

警告:extract()需要参数1   是数组,布尔值给出   C:\ wamp \ www \ RSA \ Crypt \ RSA.php在线   974

     

注意:未定义的变量:长度为   C:\ wamp \ www \ RSA \ Crypt \ RSA.php在线   975

这是我的解密页面:

    <?php
    include('Math/BigInteger.php');
    include('Crypt/Hash.php');
    include('Crypt/RSA.php');
    ini_set('max_execution_time', 0);

    $rsa = new Crypt_RSA();

    $publickey=$_POST['publickey'];
    $ciphertext = $_POST['ciphertext'];

    $rsa->loadKey($publickey);
    echo $rsa->decrypt($ciphertext);

?>
我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

  1. 使用公钥加密,使用私钥解密
  2. Base64在发布之前对密码进行编码,base64在解密之前对其进行解码