javascript和C#中的SHA1 base64算法

And*_*res 5 javascript c# 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'}")));
Run Code Online (Sandbox Code Playgroud)

这给了我 Qy95a0ShZqhbNdt6IF8qNf72jX0=

在javascript中我几乎一样:Qy95a0ShZqhbNdt6IF8qNf72jX0使用语句:

b64_sha1("{'method':'people.get'}");
Run Code Online (Sandbox Code Playgroud)

在javascript的情况下,哈希不以等号(=)结束.

这种差异会导致我在对服务器进行身份验证时遇到麻烦吗?

在我的情况下,正如你们许多人所知,我正在计算哈希的句子进入http体内,服务器将检查它.

谢谢

Don*_*Don 5

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

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

  • @Andres:您可以从pajhome.org.uk更新`sha1.js`文件的第15行,使用`=`作为填充字符. (3认同)