3

Windows ベースの Subversion を使用しており、Apache パスワード ファイルを操作するための簡単なユーティリティを .NET で作成したいと考えています。MD5Crypt と呼ばれる関数を使用していることは理解していますが、ある時点で MD5 を使用してハッシュを作成する以上のアルゴリズムの説明を見つけることができないようです。

誰かが MD5Crypt アルゴリズムとパスワード行の形式について説明できますか?

4

4 に答える 4

4

sha256 および sha512 で使用するために更新された暗号化アルゴリズムの正確な説明は、http: //www.akkadia.org/drepper/SHA-crypt.txt にあります。

MD5 アルゴリズムとの対比が含まれているため、探しているものが得られるはずです。

于 2011-02-15T21:09:46.357 に答える
3

md5crypt の実装はtcllib パッケージにあります。ダウンロードはsourceforgeから入手できます。

CAS Generic Handlerのソースコードには、Apache 互換の md5crypt の例もあります。

于 2008-08-22T21:20:37.187 に答える
2

MD5Crypt は、基本的に昔ながらの unix crypt 関数の代替です。これは freebsd で導入され、他のグループにも採用されています。

基本的な考え方は次のとおりです。

  • ハッシュはパスワードを保存する良い方法です
    • ユーザーが入力したパスワードを取得してハッシュします
    • 保存されたハッシュと比較します
    • ハッシュが同じ場合、パスワードは一致します

しかし、問題があります:

  • あなたがパスワード「jeff」を選択し、私もパスワード「jeff」を選択するとします。
  • これで、両方のパスワード ハッシュが同じになりました。
  • したがって、保存されたハッシュ コードを見れば、あなたのパスワードが私の「jeff」と同じであることがわかります。

したがって、パスワードに「salt」文字列を追加できます。

  • これはランダムなものである可能性があります。
  • あなたのアカウントが「zuzu」で、私のアカウントが「rjrj」だとします。
  • ここで、パスワードの文字列「jeffzuzu」と私のパスワードの「jeffrjrj」をハッシュします。
  • これで、パスワードのハッシュ値が異なります。
  • ソルト値を知っていてもハッシュのデコードには役立たないため、ハッシュ化されたパスワードでソルト値を安全に保存できます。

あなたは.netについて言及していますが、別のフォーラムにこれへのポインタがあります:

System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();

string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));

チッ!

于 2008-08-22T21:33:48.920 に答える
2

プロセスはかなり複雑です...ソルトとパスワードは一度ではなく1000回一緒にハッシュされます。また、base64 エンコーディングでは別のアルファベットが使用され、末尾からパディングが削除されます。

cygwin での glibc のような、使用するライブラリを見つけるのがおそらく最善の方法でしょう。

とにかく Apache に対してコーディングするので、 Apache のcrypt-md5の実装を見てください。

C の元のアルゴリズム (と思います) は、ここにあります。上記の実装とはマジックナンバーが異なるだけです。

于 2008-10-01T00:19:50.903 に答える