密码传输URL时的openSSL解密错误

时间:2018-08-16 07:09:31

标签: php encryption openssl

我有可以使用的基本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:由于错误代码每次都不同且不一致,所以我很难调试,我认为我需要一个参数来指定如何执行加密/解密

0 个答案:

没有答案