2016-04-20 8 views
0

Ich implementiere ein Online-Zahlungssystem: Paybox.SHA1 mit Nicht-Standard-Zeichen

Ich habe eine automatische Antwort (zwischen Servern) bekam und eine Antwort (an meine Kunden, wenn er auf meiner Website zurückkehren wird.

ist alles gut, außer für die Signatur, die ein SHA1 ist. Auf der automatische Antwort Seite ich habe ein gültiges Zeichen:

ahkjqBWxsi2rMXWpQr9LaQFelTIGJ93pKfGt2E6lT1sIKABsNanexC0gZvt5Z8ShgQXUsGBS10QVPzUxmYDhWpuDKIiHDZ5i9mLm2UGz8LOJeGkIlikuXOCC3ny 

jedoch mit dem Kunden (mich für diesen Test), die ich habe:

ah8R%2F2mvvpc8Jo016XyO7WZbqmQktb%2BShME6A0X3hwCNWkkGXb1YI9wIS7RSCK1IJKotbYni8BxBNoHTKcLxdA9nOQPcQSD%2FUM3%2BdiptrnTuLZ1jP9bIDCvDtSav7WG509gw5PbEztpl5lOZlnIFuCMzC3Ps%2B2Rt%2FO6PSZfHgvA%3D 

ich nicht underst und:

1) Warum sind sie différent.

2) Warum wird die zweite ‚%‘ Zeichen, die nicht ausgegeben von einem SHA1 sein kann

Ich dachte an eine andere Codierung, aber nichts so weit, jede Idee?

Dank

Antwort

0

%2F und %2B sind URL Zeichen codiert; / bzw. +.

Sie sehen sie wahrscheinlich weil sie in einer Base64 codierten String erscheinen kann und das ist, was Sie zu haben scheinen (trotz ihrer Abwesenheit im ersten Beispiel) gegeben, dass Sie keine rohen SHA1-Hash als String darstellen kann.

In vielen Szenarien können Sie HTTP nicht verwenden, um eine Zeichenfolge zu senden, die diese Zeichen in ihrer ursprünglichen Form enthält, da sie eine besondere Bedeutung haben, siehe Passing base64 encoded strings in URL.

Angenommen funktionierende Codierung/Decodierung und SHA1-Code ist der Grund, warum die zwei Hashes unterschiedlich sind, weil die Eingabedaten unterschiedlich waren.

+0

Das Problem ist, dass diese 2 Strings identisch sein sollten, die Methode, mit der sie codiert sind und die Daten für die Codierung sind die gleichen nach der Dokumentation ... – Faquarl