SHA1-Hash in Delphi XE
Ich bin in den Prozess der Implementierung digitaler XML-Signaturen. Ich fange mit kleinen Schritten, so jetzt will ich lösen, das problem der SHA-1-hashing.
Gibt es viele Fragen über dieses SO:
- Digitially Schlüssel Signieren mit Lockbox
- Verschlüsselung-Bibliothek für Delphi
- Konvertieren Sie diese php-digitale Signaturen Delphi
- Delphi: gibt es eine version von LockBox für Delphi-XE
- Delphi 2010 Kryptographie-Bibliotheken
...und wahrscheinlich noch mehr. Allerdings bin ich mit Delphi XE. So weit, ich habe versucht LockBox 2 (beide die Songbeamer und Sourceforge Versionen), Lock-Box 3, DCPCrypto2 und einige andere (Hashes ist ein einfach zu bedienendes Gerät, das verwendet die Windows-crypto-Funktionen)
Bereitete ich eine kleine test-rig, das gibt mir die folgende:
LockBox2
FAILED: 1 ('abc')
Got: '9f04f41a848514162050e3d68c1a7abb441dc2b5'
Expected: 'a9993e364706816aba3e25717850c26c9cd0d89d'
FAILED: 2 ('abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq')
Got: '51d7d8769ac72c409c5b0e3f69c60adc9a039014'
Expected: '84983e441c3bd26ebaae4aa1f95129e5e54670f1'
LockBox3
FAILED: 1 ('abc')
Got: '9f04f41a848514162050e3d68c1a7abb441dc2b5'
Expected: 'a9993e364706816aba3e25717850c26c9cd0d89d'
FAILED: 2 ('abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq')
Got: '51d7d8769ac72c409c5b0e3f69c60adc9a039014'
Expected: '84983e441c3bd26ebaae4aa1f95129e5e54670f1'
DCPCrypto2
FAILED: 1 ('abc')
Got: '9f04f41a848514162050e3d68c1a7abb441dc2b5'
Expected: 'a9993e364706816aba3e25717850c26c9cd0d89d'
FAILED: 2 ('abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq')
Got: '51d7d8769ac72c409c5b0e3f69c60adc9a039014'
Expected: '84983e441c3bd26ebaae4aa1f95129e5e54670f1'
Hashes
Test 1 passes
Test 2 passes
Haben es Ihnen gelungen ist, kompilieren Sie die genannten Bibliotheken unter Delphi XE und stellen Ihnen die entsprechenden Werte? Ich bin besonders daran interessiert, DCPCrypt2 SelfTest
Verfahren.
Bearbeiten: ich habe diese Antwort mit der festen source-code. Danke Euch allen für Eure Hilfe, es ist am meisten geschätzt.
- Ohne Beispielcode deine Frage ist sinnlos.
- +1 für die übersicht der Bibliotheken. Beachten Sie, dass hashing gedacht, für binäre Daten, nicht für strings (Ihre binäre Darstellung abhängig von Ihrer Kodierung). Ich schrieb zu einem ähnlichen Ergebnis, während schreiben auf MD5-hashing,. (Lesen Sie die Antworten: das war das Fazit der Antworten, die zu <g>).
- Das nächste mal poste etwas code!
- P - ich werde aktualisieren, diese Antwort mit meinem code.
- Mayevski 'EldoS Corp - Dude, ich bin nur Bewertung der SecureBlackBox toolkit, und ich bin Platt. Haben Sie nicht eine schöne, Fette Rabatt-Gutschein rumfliegen, den Sie mir geben können? 😉
- ja, bitte Kontaktieren Sie mich über unser HelpDesk ( eldos.com/helpdesk )
- Ich sah Ihre Benutzer-feedback-Nachricht und ich werde Antworten gibt. Wenn Sie keine e-mail bekommen, noch verwenden Sie bitte HelpDesk
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leonardo, ich denke, dass das Ihr problem ist die
UNICODE
wenn Sie verwendet eine Funktion hash astring
Sie übergeben ein array (buffer) des bytes. also, wenn Sie passieren dieabc
string in Delphi XE, Sie sind hashing-Puffer wie diese61 00 62 00 63 00
(Hex-Darstellung)überprüfen Sie diese Beispiel-Anwendung, die das Windows-crypto-Funktionen aus der
Jwscl library
(JEDI-Windows-Security-Code-Lib)diese Rückkehr
abc
AnsiStringA9993E364706816ABA3E25717850C26C9CD0D89D
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
AnsiString84983E441C3BD26EBAAE4AA1F95129E5E54670F1 für
abc
unicode9F04F41A848514162050E3D68C1A7ABB441DC2B5
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
Unicode51D7D8769AC72C409C5B0E3F69C60ADC9A039014
Meine Cygwin-Befehl-Eingabeaufforderung sagt mir, es ist in der Tat Unicode, das ist verwirrend Sie:
Konnte der erwartete Wert für eine ANSI-Zeichenfolge und der hash, die Sie erhalten, für eine unicode-Zeichenfolge?
Okay, so war es Unicode-Probleme. Nur für den Fall, Sie möchten wissen, dies ist meine Unit1.pas-Quelle. Sie brauchen eine form mit einem memo und einen button. Erfordert DCPCrypt2, LockBox2, LockBox3 und die Hashes Einheit.