簡體   English   中英

PHP MyCrypt編碼/解碼不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM