Как установить MessageDigest seed? - PullRequest
2 голосов
/ 04 августа 2010

Класс MessageDigest реализует алгоритм SHA-1 (среди многих других).Алгоритм SHA-1 позволяет использовать разные «семена» или начальные дайджесты.См. SHA-1 Psuedocode

Алгоритм инициализирует переменные или начальное число:

Initialize variables:
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0

Однако класс MessageDigest, как описано в Онлайн-руководстве по Java, не предоставляет API для установки этих начальных переменных.Фактически, это не заявляет значение начальных переменных.

Как установить начальное начальное число для алгоритма SHA-1?

Где приведен пример SHA-1 в Java, ИСПОЛЬЗОВАНИЕ НАЧАЛЬНОГО СЕМЯНА?
(я ищу реализацию SHA-1, если в примере не используется MessageDigest с альтернативным начальным начальным числом.)

Ответы [ 3 ]

1 голос
/ 21 октября 2010

Функция Java не может быть снабжена начальным начальным числом.

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

1 голос
/ 19 января 2011

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

Добавление соли также более эффективно, чем прямая установка начальных значений, поскольку в дополнение к изменению внутреннего состояния хеша, еслисоль не кратна размеру блока дайджеста, поэтому она также может нарушить выравнивание, с которым вход подается в хэш-функцию.

1 голос
/ 04 августа 2010

Где вы видите потребность в семени в дайджесте SHA-1? Обычно в алгоритме шифрования с потребностью в источнике случайных чисел начальное число "необходимо". Но в SHA-1 вы даже не используете случайные числа вообще, поэтому нет никакого начального или начального вектора для установки. Переменные, которые вы упомянули, являются «сложными» (константами), они являются частью алгоритма, нет необходимости или используются для изменения значений h0-4.

...