Хеширование SHA1 в Delphi XE

Я в процессе внедрения цифровых подписей XML. Я начинаю с маленьких шагов, так что прямо сейчас я хочу решить проблему хеширования SHA-1.

Есть много вопросов по этому поводу в SO:

  1. Цифровая подпись ключа с сейфом
  2. Библиотека шифрования для Delphi
  3. Преобразовать этот php цифровой подписание на Delphi
  4. Delphi: есть ли версия LockBox для Delphi-XE
  5. Библиотеки криптографии Delphi 2010

... и, возможно, больше. Однако я использую Delphi XE. До сих пор я пробовал LockBox 2 (версии Songbeamer и Sourceforge), Lock Box 3, DCPCrypto2 и некоторые другие ( Хэши - простой в использовании модуль, использующий криптографические функции Windows)

I подготовил небольшой тестовый стенд, который дает мне следующее:

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'

Хэши

Test 1 passes
Test 2 passes

Успешно ли вам скомпилировать упомянутые библиотеки под Delphi XE и заставить их давать соответствующие значения? Я' m особенно интересовался процедурой DCPCrypt2 SelfTest .

Edit : Я добавил этот ответ с фиксированным исходным кодом. Спасибо всем за вашу помощь, мы очень ценим ее.

7
задан Community 23 May 2017 в 10:28
поделиться