DES шифрует, но Fortify сообщает о слабом шифровании на PHP 5.5.22

Я хочу DES шифровать и дешифровать, но в отчете Fortify говорится, что они слабые
Как я могу решить эту проблему?

шифровать

    function encrypt($key, $encrypt)
{
$size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$pad = $size - (strlen($encrypt) % $size);
$encrypt = $encrypt . str_repeat(chr($pad), $pad);
$data = mcrypt_encrypt(MCRYPT_DES, $key, $encrypt, MCRYPT_MODE_CBC, $key);

return base64_encode($data);
}

расшифровывать

    function decrypt($key, $decrypt)
{
$decrypt = base64_decode($decrypt);
$decrypt = mcrypt_decrypt(MCRYPT_DES, $key, $decrypt, MCRYPT_MODE_CBC, $key);
$pad = ord($decrypt{strlen($decrypt) - 1});

if ($pad > strlen($decrypt)) {
return false;
}

if (strspn($decrypt, chr($pad), strlen($decrypt) - $pad) != $pad) {
return false;
}

return substr($decrypt, 0, -1 * $pad);
}

доклад
IssueGroup Слабое Шифрование

    }

$size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$pad = $size - (strlen($encrypt) % $size);
$encrypt = $encrypt . str_repeat(chr($pad), $pad);

а также

    {
$decrypt = base64_decode($decrypt);
$decrypt = mcrypt_decrypt(MCRYPT_DES, $key, $decrypt, MCRYPT_MODE_CBC, $key);
$pad = ord($decrypt{strlen($decrypt) - 1});

0

Решение

DES является, на самом деле слабое шифрование. Он был публично взломан в 90-х годах менее чем за 24 часа — проблема в том, что его ключ слишком короткий, его можно взломать с помощью грубой атаки. Он больше не подходит в качестве защиты от мотивированных атакующих. Есть ряд доступных лучших вариантов, таких как 3DES, AES и Twofish.

Редактировать: 3DES лучше, чем DES, в том смысле, что он значительно более безопасен (но все же менее безопасен, чем AES), но его производительность по необходимости значительно хуже, чем AES, DES или Twofish (потому что вы по сути применяете DES три раза). 3DES редко используется для новых реализаций.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector