Crypto-JS v2.5.3 (hmac.min.js) http://code.google.com/p/crypto-js/ライブラリを使用してクライアント側のハッシュを計算します。スクリプトは次のとおりです。
$("#PasswordHash").val(Crypto.HMAC(Crypto.SHA256, $("#pwd").val(), $("#PasswordSalt").val(), { asByte: true }));
これは次のようなものを返します:
b3626b28c57ea7097b6107933c6e1f24f586cca63c00d9252d231c715d42e272
次に、サーバー側で次のコードを使用してハッシュを計算します。
private string CalcHash(string PlainText, string Salt) {
string result = "";
ASCIIEncoding enc = new ASCIIEncoding();
byte[]
baText2BeHashed = enc.GetBytes(PlainText),
baSalt = enc.GetBytes(Salt);
System.Security.Cryptography.HMACSHA256 hasher = new HMACSHA256(baSalt);
byte[] baHashedText = hasher.ComputeHash(baText2BeHashed);
result = string.Join("", baHashedText.ToList().Select(b => b.ToString("x")).ToArray());
return result;
}
このメソッドは以下を返しました。
b3626b28c57ea797b617933c6e1f24f586cca63c0d9252d231c715d42e272
ご覧のとおり、サーバー側のメソッドがそれを無視するゼロ文字がいくつかあります。問題はどこだ?サーバー側の方法に問題はありますか? この2つの値が同じで、文字列と塩が等しい必要があります。