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
)
)
);
}