Domanda

Sto sviluppando un'applicazione, che fa uso di alcuni servizi web REST. E 'la documentazione tecnica dice che dovrei passare SHA256 hash di una stringa nella richiesta.

In un esempio di richiesta (nella documentazione) una stringa:

  

hn-Rw2ZHYwllUYkklL5Zo_7lWJVkrbShZPb5CD1expires = 1893013926label [0] = qualsiasi / somestatistics = 1d, 2d, 7d, 28d, 30d, 31d, lifetimestatus = upl, livetitle = a

Dopo l'esecuzione di:

digest = Digest::SHA256.digest(string_to_sign)
signature = Base64::encode64(digest).chomp.gsub(/=+$/, '')

Risultati in un hash:

  

YRYuN2zO + VvxISNp / vKQM5Cl6Dpzoin7mNES0IZJ06U

Questo esempio è in Ruby, come la documentazione per gli sviluppatori è rubino.

sto sviluppando la mia applicazione in C # e per la stessa stringa esattamente, quando eseguo:

byte[] rawHash = sha256.ComputeHash(rawRequest, 0, rawRequest.Length);
string friendlyHash = Convert.ToBase64String(rawHash);

e rimuovere il trailing "=" segni, ottengo:

  

Vw8pl / KxnjcEbyHtfNiMikXZdIunysFF2Ujsow8hyiw

e quindi, l'applicazione non viene eseguito con un conseguente errore firma mancata corrispondenza.

Ho provato a cambiare la codifica durante la conversione del stringa in una matrice di byte che precede l'hashing e nulla è cambiato.

Tutte le idee?

È stato utile?

Soluzione

Sulla base del documento qui , ti manca un - (che è un trattino) nella stringa. Sembra che Acrobat rimuove utilmente in un copia incolla dal documento ...

Ecco alcuni codice che ho Splatted insieme che ottiene lo stesso valore come l'esempio (bene sarebbe se si rifilato i = finali)

    string s = "hn-Rw2ZH-YwllUYkklL5Zo_7lWJVkrbShZPb5CD1expires=1893013926label[0]=any/somestatistics=1d,2d,7d,28d,30d,31d,lifetimestatus=upl,livetitle=a";

    SHA256Managed sh = new SHA256Managed();
    byte[] request = System.Text.UTF8Encoding.UTF8.GetBytes(s);
    sh.Initialize();
    byte[] b4bbuff = sh.ComputeHash(request, 0, request.Length);

    string b64 = Convert.ToBase64String(b4bbuff);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top