Ich entwickle eine Anwendung, die einige REST-Webdienste nutzt. Es ist technische Dokumentation sagt, dass ich SHA256 Hash einer Zeichenfolge in der Anfrage übergeben sollte.Unterschied in SHA-Hashes zwischen Ruby und C#
In einem Beispiel, Anforderung (in der Dokumentation) a string:
hn-Rw2ZHYwllUYkklL5Zo_7lWJVkrbShZPb5CD1expires = 1893013926label [0] = any/somestatistics = 1d, 2d, 7d, 28d, 30d, 31d, lifetimestatus = UPL , livetitle = a
Nach Ausführung:
digest = Digest::SHA256.digest(string_to_sign)
signature = Base64::encode64(digest).chomp.gsub(/=+$/, '')
ergibt eine hash:
YRYuN2zO + VvxISNp/vKQM5Cl6Dpzoin7mNES0IZJ06U
Dieses Beispiel ist in Ruby, wie die Dokumentation für Ruby-Entwickler ist.
ich meine Anwendung in C# und für die genau gleiche Zeichenfolge zu entwickeln, wenn ich ausführen:
byte[] rawHash = sha256.ComputeHash(rawRequest, 0, rawRequest.Length);
string friendlyHash = Convert.ToBase64String(rawHash);
und den nachgestellten entfernen "=" Zeichen, die ich erhalten:
Vw8pl/KxnjcEbyHtfNiMikXZdIunysFF2Ujsow8hyiw
und somit versagt die Anwendung, was zu einem Signatur-Fehlanpassungsfehler auszuführen.
Ich habe versucht, die Codierung zu ändern, während die Zeichenfolge in eine Byte-Array vor dem Hashing konvertiert und nichts geändert.
Irgendwelche Ideen?
Haben Sie die Zeichenfolge getrimmt? Könnte irgendwo ein Platz sein. – stimms
Können Sie uns die von Ihnen verwendete Zeichenfolge senden? Ich kann nicht Ihre Ergebnisse in Ruby entweder replizieren. –
Rayan, was ist das Ergebnis von Hashing in Ihrem Versuch in Ruby? –