PHP 5.5.22に弱い暗号化を報告しますが、レポートを強化し、彼らがどのように私はこの問題を解決することができます弱い暗号化 ていると言いますか?DESの暗号化が、Fortifyには、私はDESの暗号化すると解読
暗号
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});
さて、どのように弱い* *以下のものを使用してはどうですか? DESは何年も前に3DESに取って代わられましたが、新しいプロジェクトではAES(MCRYPT_RIJNDAEL_128)のようなより高速で安全なものを使用するべきです。 –
'mcrypt' **と** DESを使うことはあなたができる最悪の事です。 –
実際、DESはAESに取って代わられました。つまり、暗号化アルゴリズムの競争の全ポイントでした。 3DESはストップギャップ対策であり、完全な168ビットのキーでも112ビットのセキュリティしか持たない。 – zaph