ワールプールでのパスワード暗号化に関しては、少し過剰なソルトを生成した可能性があると思います。
これは、salt 生成コードが段階的に行うことです。
長さ 10 の疑似乱数文字列が生成されます. 可能な値は次のとおりです:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-2 から 123 までの真の乱数は、大気ノイズによって生成されます
- この疑似ランダム文字列と完全に乱数は、UNIX タイムスタンプと一緒にシャッフルされます。
- このプレソルトは、md5 で暗号化されます。
それは単に塩の生成です。私はまた、ワールプールで暗号化されたすべてのものを持っています
hash( 'whirlpool',$salt.$password);
コードにセキュリティ上の欠陥はありますか? 結合前または結合後に値を md5 ハッシュする必要がありますか?
ここにチェックする私のコードがあります...
<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
function get_true_random_number($min = 1, $max = 100) {
$max = ((int) $max >= 1) ? (int) $max : 100;
$min = ((int) $min < $max) ? (int) $min : 1;
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => '',
CURLOPT_USERAGENT => 'PHP',
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
);
$ch = curl_init('http://www.random.org/integers/?num=1&min='
. $min . '&max=' . $max . '&col=1&base=10&format=plain&rnd=new');
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
curl_close($ch);
if(is_numeric($content)) {
return trim($content);
} else {
return rand(-10,127); //INCASE RANDOM.ORG returns a server busy error
}
}
function generateSalt() {
$string = generateRandomString(10);
$int = get_true_random_number(-2,123);
$shuffled_mixture = str_shuffle(Time().$int.$string);
return $salt = md5($shuffled_mixture);
}
echo generateSalt();
?>
また、塩はどのくらいの長さですか?個人的には、他のタイプの文字をハッシュすることはそれほど重要ではないと思います。単純に、1人のブルートフォースがソルト全体を強制することはないと思います。それで全部です!前もって感謝します。また、より優れた、またはより効率的な方法があれば役立ちます。