Je développe une application qui utilise certains services web REST. Sa documentation technique dit que je devrais passer SHA256 hachage de la chaîne dans la demande.Différence dans les hachages SHA entre ruby et C#
Dans un exemple de requête (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 destinée aux développeurs de Ruby.
Je développe ma demande 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.
J'ai essayé de changer le codage tout en convertissant la chaîne en un tableau d'octets précédant le hachage et rien n'a changé.
Des idées?
Avez-vous coupé la chaîne? Peut-être un espace là-bas quelque part. – stimms
Pouvez-vous nous envoyer la chaîne que vous utilisez. Je ne peux pas reproduire vos résultats dans ruby non plus .. –
Rayan, quel est le résultat du hachage dans votre essai à ruby? –