1
我很苦惱PHP的mcrypt函數。我以前從來沒有使用過它們,並且它們在我的測試服務器(WAMP PHP 5.4.3)上正常工作,但它們在生產服務器(LAMP PHP 5.2.17)上隨機失敗。當我運行解密函數時,我得到如下的隨機(二進制?)字符:n/= C_ +` n{'a 6 Xh fEe41Omk7DjQ6/ n6leoTg ==。PHP mcrypt_decrypt隨機失敗
下面是加密和解密函數。這些來自我一直使用的nonce class。
事情我已經嘗試:
- 從兩者的功能
- 移除靜脈輸液參數的類屬性創建加密功能的IV,存儲,然後使用該財產解密函數
- 將加密輸出中的IV存儲爲described here。
還有什麼我應該嘗試?
private function fnEncrypt($sValue)
{
return trim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
hash($this->hash, $this->secret, true), $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
)
)
);
}
private function fnDecrypt($sValue)
{
return trim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
hash($this->hash, $this->secret, true),
base64_decode($sValue),
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
)
);
}