我正在尝试在 PHP 中解码加密数据,但是返回值一直返回为空。
要解密的数据作为数据参数进入 PHP 文件。
$dataArg1 = $_REQUEST["data"];
// Retrieve $encryptedData from storage ...
//
// Load the private key and decrypt the encrypted data
$encryptedData = $dataArg1;
$privateKey = array ( array(123456,654321,123456), array(123456,1234),
array(1234567,4321)
);
openssl_private_decrypt($encryptedData, $sensitiveData, $privateKey);
上面的函数来自 Stack Overflow 上另一个帖子的第二个响应: 如何在 javascript 中加密数据并在 php 中解密?
我假设解密后的值在 PHP 变量 $sensitiveData 中。
当我在屏幕上回显它时,我什么也得不到。
echo("sensitiveData=[$sensitiveData]<br />");
想法?
更新: openssl_private_decrypt() 的返回值为 FALSE,返回值为 NULL。
更新 2:我从以下 URL 创建了公钥/私钥。 http://shop-js.sourceforge.net/crypto2.htm
在底部,有一行:并将以下内容放入您的私人脚本中(可能在您的本地硬盘上 - 而不是在互联网上 - 如果找到您的私钥,这整个事情都是无用的。)
<script>
function decrypt() {
// key = [ [d], [p], [q] ];
var key=[[123456789,123456789,123456789],[123456789,1234],[123456789,4321]];
document.form.text.value=rsaDecode(key, document.form.text.value);
}
</script>
(actual values changed)
我将翻译的“var key=”行复制到 PHP(根据我的其他帖子)。上面的翻译使用嵌入式数组。然后我将该密钥传递给解密函数。
我的想法是 PHP 文档将私钥称为“混合”。我想知道是否可能需要不同格式的私钥。
这是输出:
dataArg1=[jmOdss9ktFc\"WO5eltUZXt0rpqS1NluNKa]
bResult=[]
sensitiveData=[]
var_dump=[NULL ]