Windows ベースの Subversion を使用しており、Apache パスワード ファイルを操作するための簡単なユーティリティを .NET で作成したいと考えています。MD5Crypt と呼ばれる関数を使用していることは理解していますが、ある時点で MD5 を使用してハッシュを作成する以上のアルゴリズムの説明を見つけることができないようです。
誰かが MD5Crypt アルゴリズムとパスワード行の形式について説明できますか?
sha256 および sha512 で使用するために更新された暗号化アルゴリズムの正確な説明は、http: //www.akkadia.org/drepper/SHA-crypt.txt にあります。
MD5 アルゴリズムとの対比が含まれているため、探しているものが得られるはずです。
md5crypt の実装はtcllib パッケージにあります。ダウンロードはsourceforgeから入手できます。
CAS Generic Handlerのソースコードには、Apache 互換の md5crypt の例もあります。
MD5Crypt は、基本的に昔ながらの unix crypt 関数の代替です。これは freebsd で導入され、他のグループにも採用されています。
基本的な考え方は次のとおりです。
しかし、問題があります:
したがって、パスワードに「salt」文字列を追加できます。
あなたは.netについて言及していますが、別のフォーラムにこれへのポインタがあります:
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();
string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));
チッ!
プロセスはかなり複雑です...ソルトとパスワードは一度ではなく1000回一緒にハッシュされます。また、base64 エンコーディングでは別のアルファベットが使用され、末尾からパディングが削除されます。
cygwin での glibc のような、使用するライブラリを見つけるのがおそらく最善の方法でしょう。
とにかく Apache に対してコーディングするので、 Apache のcrypt-md5の実装を見てください。
C の元のアルゴリズム (と思います) は、ここにあります。上記の実装とはマジックナンバーが異なるだけです。