Какой алгоритм mcrpyt_encrypt наиболее безопасный? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь найти безопасный алгоритм для шифрования и дешифрования определенных строк в моем проекте, над которым я работаю.Я использую mcrypt_encrypt с вариацией блочного шифра MCRYPT_RIJNDAEL_256.

Я проверил многие из них и нашел, что это кажется довольно безопасным.

Я делаю шифрование и дешифрование в функции, чтобы я мог вызыватьна них несколько раз в будущем моего проекта.Пока это то, что я придумал.Мой вопрос здесь заключается в том, есть ли способ сделать это более безопасным, труднее расшифровать или есть какие-то новые формулы / методы, которые, как известно, лучше.

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 голосов
/ 29 мая 2019

Я протестировал многие из них и нашел, что этот кажется достаточно безопасным.

Какие именно тесты вы провели?

Rijndael256 - это 256-битный вариант блокаиз Rijndael (для которого 128-битный вариант размера блока известен как AES).Тем не менее, при реализации в чистом программном обеспечении (например, в mcrypt), уязвим к атакам таймирования кеша .

Какой алгоритм mcrpyt_encrypt наиболее безопасен?

Реализации Mcrypt небезопасны .Именно поэтому он был объявлен устаревшим в PHP 7.1 и удален в PHP 7.2.

См. этот ответ для примера безопасного кода, поддерживаемого libsodium.Для PHP 7.1 и ниже вы хотите установить расширение Sodium из PECL или установить odium_compat .

...