Grub MD5暗号化アルゴリズム

Grub MD5暗号化アルゴリズム

GrubのMD5アルゴリズムはどのように機能しますか? grub-md5-cryptを実行して同じパスワードを入力すると、毎回異なる結果が表示されます。通常、md5は常に同じハッシュを返す必要がありますが、なぜ grub バージョンが毎回異なるものを返すのですか?

また、これを念頭に置いて正しいパスワードを入力していることをどうやって知ることができますか?同じパスワードを使用してすべての暗号化が異なるハッシュを生成する場合、後でパスワードを入力するとき(理論的には同じアルゴリズムを使用して)ハッシュが異なるため、正しいパスワードが表示されるようにどのように一致しますか?

塩がどこかに使用され、塩がランダムに生成されると仮定しています。

ベストアンサー1

Grubのソースコードが最も見やすい場所です。必要なロジックは次の場所にありますstage2/md5.c

int md5_password (const char *key, char *crypted, int check)

次の形式の文字列を生成します。$1$aaaaaaaa$bbbbbbbbbbbbbbbbbbbbbbここで、「aaaaaaaa」シーケンスは任意のソルトであり、「bbbbbbbbbbbbbbbbbbbbbbbb」は、変更されたbase64でエンコードされたmd5結果を使用して、特定の方法でパスワードとソルトを1000回混合した結果です。

修正されたbase64辞書は次のとおりです。

./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

実際のハイブリッドアルゴリズムは、GNU General Public Licenseバージョン2(またはそれ以降のバージョン)の条件に従って再配布できます。このバージョンは以下からダウンロードできます。GNU FTPサイトまたはGNUイメージ。

おすすめ記事