什么是最安全的mcrpyt_encrypt算法?

时间:2019-02-11 06:16:15

标签: php encryption mcrypt

我正在尝试提出一种安全算法来加密和解密我正在研究的项目中的特定字符串。我正在使用带有MCRYPT_RIJNDAEL_256块密码变体的mcrypt_encrypt。

我已经测试了很多,发现这似乎很安全。

我正在将加密和解密转换为函数,以便在以后的项目中可以针对多个实例调用它们。到目前为止,这是我想出的。我的问题是,是否有任何方法可以使此方法更安全,更难解密,或者是否有已知更好的公式/方法。

function encrypt($privatekey, $stringe)
 {
     $var = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $privatekey, $stringe, 
 MCRYPT_MODE_CBC, $privatekey);
     return base64_encode($var);
 }
function decrypt($privatekey, $stringd)
{
    $stringd = str_replace("~", "+", $stringd);
    $var = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $privatekey, 
base64_decode($stringd), MCRYPT_MODE_CBC, $privatekey);
    $var = rtrim($var, "\0\4");
    return $var;
}

1 个答案:

答案 0 :(得分:0)

  

我已经测试了很多,发现这似乎很安全。

您到底进行了哪些测试?

Rijndael256是Rijndael的256位块变体(对此,其128位块大小变体称为AES)。但是,当以纯软件实现时(例如实现了mcrypt),it's vulnerable to cache-timing attacks

  

最安全的mcrpyt_encrypt算法是什么?

Mcrypt的实现不安全。这就是为什么它在PHP 7.1中被弃用,并在PHP 7.2中被删除。

有关由libsodium支持的安全使用示例代码,请参见this answer。对于PHP 7.1及更低版本,您想从PECL安装Sodium扩展名或安装sodium_compat