【问题标题】:PHP MYCRYPT - RIJNDAEL_128 with Mcrypt CBC gives the different encryption string everytimePHP MCRYPT - RIJNDAEL 128 白色 Mcrypt CBC 每次都给出不同的加密字符串
【发布时间】:2013-06-08 18:59:20
【问题描述】:

我又带着 PHP+RIJNDAEl_128+CBC 回来了。

我对原始字符串的加解密成功了。

但我面临的唯一问题是我每次都得到不同的加密字符串。

我认为理想情况下每次都应该相同。

下面是代码:

class Encypt{

const ENCRYPTION_KEY = '3aa22e01c04c7059778c54d122b0273689fba00f4a166a66d15f7ba6a8ba8743';


function createQueryString(){
$str = "1844427316My Name Is Dave1336407610774000000000000";
$encStr = $this->encrypt($str);

return $encStr;
}

function encrypt($strValue){
$iv =mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),MCRYPT_RAND);
$encData = trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128,self::ENCRYPTION_KEY, $strValue,MCRYPT_MODE_CBC,$iv)));
            $data['iv'] = $iv;
            $data['encdata'] = $encData;

            return $data;
}
 /**
     *  Function to decrypt data using AES Encryption Symmetric Algorithm 128 bytes
     */
    function decrypt($strValue, $iv){
            return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128,ENCRYPTION_KEY,base64_decode($strValue),MCRYPT_MODE_CBC,$iv));
    }

}    
$enc_obj = new Encypt();

$encstr = $enc_obj->createQueryString();

echo "Encrypted Str:-->".$encstr['encdata']."<br>";
$deCrypt = $enc_obj->decrypt($encstr['encdata'], $encstr['iv']);
echo "Decrypted Str:-->".$deCrypt;

【问题讨论】:

  • 因为每次都是随机的字节摘要,所以解密存储key和IV传给解密函数
  • 专业提示:不要这样做。使用图书馆。我会推荐 Zend\Crypt...
  • @ircmaxell 无论如何我都必须使用这个组合....
  • 不同的字符串会解密为相同的源文本吗?如果是这样,那么我没有看到问题。

标签: php mcrypt encryption-symmetric rijndael cbc-mode


【解决方案1】:

对于每次运行中的不同 IV,您每次收到的加密文本的不同值是正常的。这实际上是算法的一部分,并使其更加安全。

【讨论】:

    【解决方案2】:

    您的加密函数调用 mcrypt_create_iv(&lt;&lt;iv_size&gt;&gt;, MCRYPT_RAND);

    由于调用以MCRYPT_RAND(系统随机数生成器)为源,每次创建的新初始化向量将与以前的不同。

    这将导致每次都产生不同的加密字符串。您可以使用与加密过程相同的初始化向量来解密密文。

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 2014-07-07
      • 2013-12-01
      • 2017-12-26
      • 2011-11-12
      • 2011-08-31
      • 2014-10-04
      • 2014-02-06
      相关资源
      最近更新 更多