javascript和C#中的SHA1 base64算法

时间:2010-03-17 12:46:12

标签: c# javascript sha1

我正在运行一些测试,比较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体内,服务器会检查它。

由于

2 个答案:

答案 0 :(得分:5)

取决于接收器,但尝试使用C#从javascript解码结果,你会得到一个例外。 =符号用于将结果填充到正确的长度。

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

答案 1 :(得分:4)

我在问题中提到的lib中的sha1.js有一个名为b64pad的全局变量,用于填充。默认情况下,其值为""。更改为"="会给出C#API计算的确切哈希值