Question

Je développe une application, qui utilise certains services Web REST. Il est la documentation technique dit que je passerais hachage SHA256 d'une certaine chaîne dans la demande.

Dans un exemple de demande (dans la documentation) une chaîne:

  

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

Après l'exécution:

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

résultats dans un hachage:

  

YRYuN2zO + VvxISNp / vKQM5Cl6Dpzoin7mNES0IZJ06U

Cet exemple est en rubis, que la documentation est pour les développeurs de Ruby.

Je développe mon application en C # et pour exactement le même chaîne, quand j'Execute:

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

et enlever la fuite "=" signes, je reçois:

  

Vw8pl / KxnjcEbyHtfNiMikXZdIunysFF2Ujsow8hyiw

et, par conséquent, l'application ne parvient pas à exécuter entraîne une erreur de décalage de signature.

Je l'ai essayé de changer le codage lors de la conversion de la chaîne à un tableau d'octets qui précède le hachage et rien n'a changé.

Toutes les idées?

Était-ce utile?

La solution

D'après le document , il vous manque - (qui est un tableau de bord) dans votre chaîne. Il semble que Acrobat supprime obligeamment dans une pâte de copie du document ...

Voici un code que je splatted ensemble qui obtient la même valeur que l'exemple (bien qu'il serait si vous parés = les finales)

    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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top