MD5Crypt の背後にあるアルゴリズム
質問
私は Windows ベースの Subversion を使用していて、Apache パスワード ファイルを操作するための簡単なユーティリティを .NET で作成したいと考えています。MD5Crypt と呼ばれる関数を使用していることは理解していますが、ある時点で MD5 を使用してハッシュを作成するということ以外のアルゴリズムの説明が見つからないようです。
誰か MD5Crypt アルゴリズムとパスワード行形式について説明してもらえますか?
解決
sha256 および sha512 で使用するために更新された暗号化アルゴリズムの正確なテキスト説明は、次の場所にあります。 http://www.akkadia.org/drepper/SHA-crypt.txt
MD5 アルゴリズムとの対照も含まれているため、探しているものが得られるはずです。
他のヒント
md5crypt の実装は次の場所にあります。 tcllib パッケージ。 ダウンロードは以下から可能です ソースフォージ.
Apache 互換の md5crypt の例も次の場所にあります。 CAS 汎用ハンドラーのソース コード
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) ) ));
ひーっ!
所属していません StackOverflow