我的腳本使用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