我的脚本使用openssl_private_decrypt()
解密在另一个程序中使用RSA加密的字符串。目前它写入文件。但是当我尝试在文本编辑器中打开它时,它说它无法检测到编码。如果我尝试回显它,则不显示任何内容。如果我输出它的长度,我得到256
,而不是正确的3
。RSA解密数据损坏
我知道解密是正确的,因为在输出文件上使用cat
终端命令可以提供正确的数据。
$ cat decrypted.txt
看起来这是一个字符编码问题,我听到的问题会给PHP带来很多痛苦。我甚至试过utf8_encode()
。问题可能是什么?
下面的代码:
$results = '';
openssl_private_decrypt(
base64_decode(
<<<EOS
QWlG+AZIt9GE0hw0wwcPRtUWueMLBxj3YWpa5zQBoz1ttnt7TvlxDtYWZcvaUL/qr2CJCADE2iTR
G72FhAwew2fhqlqmsxL7Nns3yegflTTMXyilVM3mPU4Cx94ylLfa+ZrqrNEepaRorNJ/js5iTq9i
avegO/kYOv4zhEsZirlk/Mj0vVv6irWo8WyZoCDC2SwfGWeSUI8F4pq4FUkRh9V/0zAUZ+3P0A7Z
SrA80dSa6U/J+poRcmE1vRLQXvM8dBtFRKmb0zfltLUBMcMhcglzAhcpemJ99OCZmUuynFRcRNkj
CkOLsO+lSHntcbmXqsKE+of78gnU3tp5hHSHIg==
EOS
),
$results,
openssl_pkey_get_private(
// load private key
),
OPENSSL_NO_PADDING
);
echo $results;
请向我们提供您的代码和示例输入 – AbiusX 2011-03-15 21:47:46
特别是,您能向我们展示您用于将加密字符串写入文件的代码,然后是您用于将其读取的代码吗?另外,你完全不应该在这里使用'utf8_encode/decode'。加密的数据是一串字节,而不是一串字符。 – Charles 2011-03-15 21:51:58
长度差异也可能是由于加密函数将原始数据填充到加密算法所需的块大小。 – 2011-03-15 21:52:37