Sto eseguendo alcuni test confrontando l'algoritmo sha1 implementato in javascript - ottenuto da http://pajhome.org.uk/crypt/ - con la sua implementazione in C#.Algoritmo base64 SHA1 in javascript e C#
con C# per ottenere l'hash per { 'metodo': 'people.get'} sto usando questa dichiarazione:
Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("{'method':'people.get'}")));
che mi dà Qy95a0ShZqhbNdt6IF8qNf72jX0=
in JavaScript ottengo quasi stessa: Qy95a0ShZqhbNdt6IF8qNf72jX0
utilizzando l'istruzione:
b64_sha1("{'method':'people.get'}");
Nel caso javascript, l'hash non termina con un segno di uguale (=).
Questa differenza può causare problemi durante l'autenticazione con un server?
Nel mio caso, come molti di voi potrebbero sapere, la frase che sto calcolando l'hash entra nel corpo http e il server la controllerà.
Grazie
Ok, in base a tali informazioni ho visto ora che il segno =, come hai sottolineato, viene utilizzato per riempire il messaggio. Grazie – Andres
@Andres: puoi aggiornare la riga 15 del file 'sha1.js' da pajhome.org.uk per usare' = 'come carattere di riempimento. – LukeH
Sì, mentre stavo scrivendo la mia risposta stavi scrivendo questa osservazione. Grazie :) – Andres