开发者

SHA1 base64 algorithm in javascript and C#

I'm running some tests comparing the sha1 algorithm implemented in javascript - got from http://pajhome.org.uk/crypt/ - with its implementation in C#.

Using C# to get the hash for {'method':'people.get'} I'm using this statement:

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

which gives me Qy95a0ShZqhbNdt6IF8qNf72jX0=

In javascript I get almost the same: Qy95a0ShZqhbNdt6IF8qNf72jX0 usi开发者_运维技巧ng the statement:

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

In the javascript case, the hash doesn't end with a equal (=) sign.

Can this difference cause me troubles in authenticating against a server?

In my case, as many of you may know, the sentence I'm reckoning the hash goes inside the http body and the server will check it.

Thanks


Would depend on the receiver but try decoding your result from the javascript with C# and you'll get an exception. The = sign is there to pad the result to the correct length.

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


The sha1.js from the lib I mentioned in my question, has a global variable called b64pad, used for the purpose of padding. By default its value is "". Changing to "=" gives the exact hash reckoned by C# API

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜