5

javascript で実装された sha1 アルゴリズム ( http://pajhome.org.uk/crypt/から取得) と C# での実装を比較するいくつかのテストを実行しています。

C# を使用して {'method':'people.get'} のハッシュを取得するには、次のステートメントを使用しています。

Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("{'method':'people.get'}")));

それは私に与えますQy95a0ShZqhbNdt6IF8qNf72jX0=

JavaScript では、ほぼ同じ結果が得られます。次Qy95a0ShZqhbNdt6IF8qNf72jX0のステートメントを使用します。

b64_sha1("{'method':'people.get'}");

JavaScript の場合、ハッシュは等号 (=) で終わりません。

この違いにより、サーバーに対する認証で問題が発生する可能性はありますか?

私の場合、多くの人が知っているように、私がハッシュを計算している文は http 本文内に入り、サーバーはそれをチェックします。

ありがとう

4

2 に答える 2

5

受信者によって異なりますが、C# を使用して JavaScript から結果をデコードしようとすると、例外が発生します。= 記号は、結果を正しい長さにパディングするためにあります。

http://en.wikipedia.org/wiki/Base64

于 2010-03-17T13:03:25.420 に答える
4

私の質問で言及した lib には、パディングの目的で使用さsha1.jsれる というグローバル変数があります。b64padデフォルトでは、その値は""です。に変更する"="と、C# API によって計算された正確なハッシュが得られます

于 2010-03-17T13:13:43.977 に答える