Ich bin dabei, digitale XML-Signaturen zu implementieren. Ich beginne mit kleinen Schritten, also möchte ich jetzt das Problem des SHA-1 Hashing lösen.
Es gibt viele Fragen dazu in SO:
... und wahrscheinlich mehr. Ich verwende jedoch Delphi XE. Bisher habe ich LockBox 2 (sowohl die Songbeamer- als auch die Sourceforge-Version), Lock Box 3, DCPCrypto2 und einige andere () versucht Hashes ist eine einfach zu verwendende Einheit, die Windows Crypto-Funktionen verwendet)
Ich habe einen kleinen Prüfstand vorbereitet, der mir folgendes gibt:
LockBox2
%Vor%LockBox3
%Vor%DCPCrypto2
%Vor%Hashes
%Vor% Ist es Ihnen gelungen, die genannten Bibliotheken unter Delphi XE zu kompilieren und ihnen die entsprechenden Werte zu geben? Ich bin besonders interessiert an DCPCrypt2 SelfTest
procedure.
Bearbeiten : Ich habe diese Antwort hinzugefügt mit dem festen Quellcode. Vielen Dank für Ihre Hilfe, es ist sehr geschätzt.
Leonardo, ich denke, Ihr Problem ist die UNICODE
, wenn Sie eine Funktion verwenden, um eine string
zu hashen, übergeben Sie ein Array (Puffer) von Bytes. Wenn Sie die abc
-Zeichenfolge in Delphi XE übergeben, wird ein Puffer wie diese 61 00 62 00 63 00
(Hex-Darstellung)
Überprüfen Sie diese Beispielanwendung, die die Windows-Crypto-Funktionen von der Jwscl library
(JEDI Windows Security Code Lib) verwendet
diese Rückkehr
abc
AnsiString
A9993E364706816ABA3E25717850C26C9CD0D89D
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
AnsiString
84983E441C3BD26EBAAE4AA1F95129E5E54670F1 für
abc
Unicode
9F04F41A848514162050E3D68C1A7ABB441DC2B5
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
Unicode
51D7D8769AC72C409C5B0E3F69C60ADC9A039014
Meine Cygwin-Eingabeaufforderung sagt mir, dass es tatsächlich Unicode ist, das Sie verwirrt:
%Vor%Könnte der erwartete Wert für eine ANSI-Zeichenfolge sein und der Hash, den Sie erhalten, ist für eine Unicode-Zeichenfolge?
Okay, also Unicode-Probleme. Nur für den Fall, dass Sie wissen wollen, das ist meine Unit1.pas Quelle. Sie benötigen ein Formular mit einem Memo und einer Schaltfläche. Benötigt DCPCrypt2, LockBox2, LockBox3 und die Hashes-Einheit.
%Vor%Tags und Links delphi delphi-xe cryptography sha1