0

パスワードの任意の組み合わせのプレーンテキストとハッシュ値を含むデータベースの作成について遊んでいますが、それらがデータベースに追加されると、次の組み合わせに進む前に多くの重複が発生します...理由に関するアイデアそしてそれを止める方法は?

<?php
$con=mysqli_connect("localhost","root","","test");
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$numberof=0;
$alphabet = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");

for($i=0; $i<count($alphabet); $i++){
    for($j=0; $j<count($alphabet); $j++){
        for($k=0; $k<count($alphabet); $k++){
            for($l=0; $l<count($alphabet); $l++){
                $final = $alphabet[$i].$alphabet[$j].$alphabet[$k];
                $hash = md5($final);

                mysqli_query($con,"INSERT INTO hashes (plain, hash) VALUES ('$final', '$hash')");
            }
        }
    }
}
echo $numberof;
?>
4

2 に答える 2

1

forカウンター$i $j $kとを含む 4 つの入れ子になったループがあり$lます。ただし、クエリで使用する最終的な文字列は$i $jandのみを使用するため、$k約 26 個の重複があります。$l文字列の末尾にの値を追加するつもりだったと思いますか?

于 2013-07-25T12:05:17.943 に答える
0

最後のループを削除するだけです。私は以下のようにあなたのコードを更新しました:

for($i=0; $i<count($alphabet); $i++){
    for($j=0; $j<count($alphabet); $j++){
        for($k=0; $k<count($alphabet); $k++){
            $final = $alphabet[$i].$alphabet[$j].$alphabet[$k];
            $hash = md5($final);
            mysqli_query($con,"INSERT INTO hashes (plain, hash) VALUES ('$final', '$hash')");           
        }
    }
}
于 2013-07-25T12:33:48.193 に答える