размер строки хеша - PullRequest
       19

размер строки хеша

8 голосов
/ 02 апреля 2012

В Python я использую следующий код для создания хэша для паролей пользователей:

self.password = hmac.new(security_key, raw_password, sha1).hexdigest()

Теперь я хотел бы сохранить это значение в базе данных.Какого размера должен быть столбец моей базы данных?Кажется, это связано со свойством digest_size, но не знаю, какой объект или класс имеет такое свойство.у sha1 его нет.

Ответы [ 2 ]

5 голосов
/ 02 апреля 2012

Вывод hmac зависит от алгоритма хеширования, который он использует.В вашем случае он использует sha1, который всегда выводит 20-байтовую строку байтов в соответствии с RFC2104.Вызов hexdigest () превращает байтовую строку в печатный шестнадцатеричный формат.1 байт = 2 шестнадцатеричных числа, таким образом, общее количество составляет 40 шестнадцатеричных символов.Вы можете безопасно установить в столбце базы данных значение char (40).

2 голосов
/ 02 апреля 2012

Вывод хэш-функции sha-1 будет состоять из 20 символов.(В соответствии с RFC2104 , на который ссылается документ модуля Python hmac : "... L длина байта хеш-выходов (L = 16 для MD5, L = 20 для SHA-1). ")

Вы также можете проверить это:

import hashlib;
H = hashlib.sha1("blahblah");
print(H.digest_size);
...