简体   繁体   中英

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 using 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM