我有可以使用的基本PHP脚本进行加密,然后使用RSA非对称密钥解密字符串
注意:正在使用Windows 7 64位和使用VC-WIN32安装的来自官方Git站点的openSSL最新版本在HP250 G4计算机上运行WAMP64 3.1.3最新版本。
<?php
$publickey=openssl_pkey_get_public('file://C:/wamp64/www/publickey.pem');
$privatekey=openssl_pkey_get_private('file://C:/wamp64/www/privatekey.pem');
$data = "this is a test";
openssl_public_encrypt($data, $encrypted, $publickey);
// i B64 encode then URL encode to make sure the cipher will not get damaged if transferred in a URL link
$encrypted = urlencode(base64_encode($encrypted));
$encrypted = base64_decode(urldecode($encrypted));
openssl_private_decrypt($encrypted, $decrypted, $privatekey);
echo $decrypted;
?>
但是当我将代码分成2个文件并在URL链接中发送密码时,它会给出错误(每次都是不同的代码),例如:
第一页:
<?php
$publickey=openssl_pkey_get_public('file://C:/wamp64/www/publickey.pem');
$data = "this is a test";
openssl_public_encrypt($data, $encrypted, $publickey);
$encrypted = urlencode(base64_encode($encrypted));
echo "<a href='decrypt.php?h=".$encrypted."'>click</a>";
?>
decrypt.php页面:
<?php
$privatekey=openssl_pkey_get_private('file://C:/wamp64/www/privatekey.pem');
$encrypted = base64_decode(urldecode($_GET["h"]));
openssl_private_decrypt($encrypted, $decrypted, $privatekey);
echo openssl_error_string(); //this line throws errors of different numbers
echo $decrypted;//nothing happens
?>
知道这里可能是什么问题吗?
-i即使我重新生成了它们也可以将测试密钥放在这里,即使我只有一个页面脚本也可以使用
-引发错误的示例包括:错误:0906D06C:PEM例程:PEM_read_bio:无起始行,错误:0407109F:rsa例程:RSA_padding_check_PKCS1_type_2:pkcs解码错误,错误:04065072:rsa例程:rsa_ossl_private_decrypt:填充检查失败
-comment:由于错误代码每次都不同且不一致,所以我很难调试,我认为我需要一个参数来指定如何执行加密/解密