SHA1-Hashing in Delphi XE

7

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:

  1. Schlüssel mit Lockbox digital signieren
  2. Verschlüsselungsbibliothek für Delphi
  3. Konvertieren Sie diese digitale Signatur in Delphi
  4. Delphi: Gibt es eine Version von LockBox für Delphi-XE
  5. Delphi 2010-Kryptographie-Bibliotheken

... 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 Herrera 08.02.2011, 04:45
quelle

4 Antworten

26

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)

verwendet

Überprüfen Sie diese Beispielanwendung, die die Windows-Crypto-Funktionen von der Jwscl library (JEDI Windows Security Code Lib) verwendet

%Vor%

diese Rückkehr

abc AnsiString

A9993E364706816ABA3E25717850C26C9CD0D89D

abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq AnsiString

84983E441C3BD26EBAAE4AA1F95129E5E54670F1 für

abc Unicode

9F04F41A848514162050E3D68C1A7ABB441DC2B5

abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq Unicode

51D7D8769AC72C409C5B0E3F69C60ADC9A039014

    
RRUZ 08.02.2011, 05:39
quelle
18

Meine Cygwin-Eingabeaufforderung sagt mir, dass es tatsächlich Unicode ist, das Sie verwirrt:

%Vor%     
Barry Kelly 08.02.2011 05:44
quelle
6

Könnte der erwartete Wert für eine ANSI-Zeichenfolge sein und der Hash, den Sie erhalten, ist für eine Unicode-Zeichenfolge?

    
Thorsten Engler 08.02.2011 05:37
quelle
4

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%     
Leonardo Herrera 09.02.2011 03:31
quelle