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

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

于 2010-03-17T13:13:43.977 回答