MD5を使用してUnixスタイルのパスワードハッシュを生成しようとしています。私はそれが$1$<salt>$<hash>
のように見える必要があると思いますが、<hash>
の部分は、私が何をしても同じに見えません。ここで私はハッシュを生成する方法である:C#でUnixスタイルのMD5パスワードハッシュを生成
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(pass);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append((char) hash[i]);
}
String calchash = sb.ToString();
私は今私がハッシュされたバイトから文字列を作るためにStringBuilder
を使用していますされていることをかなり確信しています。しかし、私は正しい設定が何であるか分からない。
Unixのパスワードハッシュは、プレーン、MD5を使用していません。 MD5暗号は、パスワードと塩をさまざまな組み合わせでハッシュし、評価速度を低下させます。アルゴリズムのいくつかのステップでは、暗号方式の観点からスキームが設計されていることが疑問視されています。パスワードの長さによっては、どのデータがハッシュされているかが決定されます。ゼロビットごとにパスワードの最初のバイト、すべてのセットビットに対して前のハッシュ計算の最初のバイトが決定されます。 – CodesInChaos
ええ、私はちょうど私が適切に塩漬けしていないことに気づいた。私は動作するUNIXの 'crypt'の実装を見つけました。 [http://sourceforge.net/projects/cryptapi/](http://sourceforge.net/projects/cryptapi/) –