Używam kilku testów porównujących algorytm sha1 zaimplementowany w javascript - dostałem od http://pajhome.org.uk/crypt/ - z jego implementacją w C#.Algorytm SHA1 base64 w javascript i C#
Korzystanie z C#, aby uzyskać hash dla { 'metody': 'people.get'} Używam tego komunikatu:
Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("{'method':'people.get'}")));
który daje mi Qy95a0ShZqhbNdt6IF8qNf72jX0=
w JavaScript mam prawie sama: Qy95a0ShZqhbNdt6IF8qNf72jX0
za pomocą instrukcji:
b64_sha1("{'method':'people.get'}");
w javascript przypadku mieszania nie kończy się z równości (=) znakiem.
Czy ta różnica może powodować problemy z uwierzytelnianiem się na serwerze?
W moim przypadku, jak wielu z was może wiedzieć, zdanie, w którym liczę hash, przechodzi do treści http, a serwer to sprawdzi.
Dzięki
Ok, na podstawie tych informacji widziałem teraz, że znak =, jak wskazano, służy do dopełniania wiadomości. Dzięki – Andres
@Andres: Możesz zaktualizować wiersz 15 pliku 'sha1.js' z pajhome.org.uk, aby użyć' = 'jako dopełnienia. – LukeH
Tak, podczas gdy pisałem własną odpowiedź, pisałeś tę uwagę. Dzięki :) – Andres