[英]PHP MyCrypt Encoding/Decoding doesn't work
我有一個小問題:我的解密不會給我我編碼的相同字符串,而且我找不到問題...在其他帖子中看過,但是這里沒有什么有用的功能:
public static function encryptData($data){
if($key = self::getEncryptionKey()){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB,$iv));
} else {
return false;
}
}
public static function decryptData($data)
{
if($key = self::getEncryptionKey()){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($data), MCRYPT_MODE_ECB,$iv);
} else {
return false;
}
}
問題出在哪里? 我有點絕望...
要解密,您需要雙方的內容完全相同。 鍵,模式,IV和填充。
查看您的代碼,您似乎正在生成用於解密的新IV。 別。 使用與加密相同的IV。
您正確地明確指定了一種模式,但是選擇了最差的模式。 不要使用ECB,它會泄漏信息。 請改用CBC或CTR模式。
您不指定填充。 要明確指定它更好,將PKCS7與Rijndael一起使用。
如果以上方法均無濟於事,請逐字節檢查密鑰,以確保加密和解密都相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.