Вопрос

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

Помощь будет здорово.

Это было полезно?

Решение

Ответ Самира правильный, но несколько загадочный. По сути, соль - это просто случайно полученное повреждение данных, которые вы префиксируете или постфиксируете ваши данные, чтобы значительно увеличить сложность атаки словаря на ваше значение HaShed. Так дал соль s и данные d Вы только что сделали следующее, чтобы генерировать соленый хэш данных:

import hashlib
hashlib.sha512( s + d ).hexdigest()

Видеть это Статья Википедии Больше подробностей

Другие советы

Просто добавьте соль к конфиденциальным данным:

>>> import hashlib
>>> m = hashlib.sha512()
>>> m.update('salt')
>>> m.update('sensitive data')
>>> m.hexdigest()
'70197a4d3a5cd29b62d4239007b1c5c3c0009d42d190308fd855fc459b107f40a03bd427cb6d87de18911f21ae9fdfc24dadb0163741559719669c7668d7d587'
>>> n = hashlib.sha512()
>>> n.update('%ssensitive data' % 'salt')
>>> n.hexdigest()
'70197a4d3a5cd29b62d4239007b1c5c3c0009d42d190308fd855fc459b107f40a03bd427cb6d87de18911f21ae9fdfc24dadb0163741559719669c7668d7d587'
>>> hashlib.sha512('salt' + 'sensitive data').hexdigest()
'70197a4d3a5cd29b62d4239007b1c5c3c0009d42d190308fd855fc459b107f40a03bd427cb6d87de18911f21ae9fdfc24dadb0163741559719669c7668d7d587'

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

>>> import hashlib
>>> m = hashlib.sha512()
>>> m.update(b"Nobody inspects")
>>> m.update(b" the spammish repetition")
>>> m.digest()
b'\xd0\xf4\xc1LH\xadH7\x90^\xa7R\x0c\xc4\xafp\x0fd3\xce\t\x85\xe6\xbb\x87\xb6\xb4a|\xb9D\xab\xf8\x14\xbdS\x96M\xdb\xf5[A\xe5\x81+:\xfe\x90\x89\x0c\nM\xb7\\\xb0Cg\xe19\xfdb\xea\xb2\xe1'
>>> m.update(b"My super-secret salt.")
>>> m.digest()
b'\xcd\xd7K\xd9!~\xa8\x1d6\x9b\xa6\xde\x06\t\x02\xa1+}\xaeNA\x94a`\xaa\xf4\xe9\xb5\xff\x1f\x9cE\x84m\xbb\x98U\xb4z\x92\x9e\xe8\xc9\xc2\xc8\x8f\x068e\xb0\r\xed\xb7\xde\x80\xa6,\n\x111w{\xa2\x9b'

Если вы ищете замену Crypt (), новые версии Glibc имеют SHA-512 «$ 6 $ $» с подсчетом переменной итерации (см. Страница Ульриха Дреппер, в котором есть описание и ссылки на полную реализацию C sha512_crypt_r()).

Написание своего собственного крипто очень не распространяется - вышеупомянутое sha512(salt+password) не помогает против атаки грубой силы.

Для генерации соли, используйте что-то вроде os.urandom(16) для случайных байтов или ''.join(map(lambda x:'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'[ord(x)%64], os.urandom(16))) Для случайных базовых 64-одинаковых символов (для использования с криптами () - Alikes).

(Я говорю, что Base64 - одинаково, что это не совпадает с базой64 в PEM / MIME.)

Используйте PassLib, написание собственного пароля Crypto - это почти уверенный путь к неудаче.

SHA512 не отличный способ хранить хешитые пароли в эти дни. Вы должны использовать BCRYPT или что-то подобное. Что важно, так это то, что солование встроена и что алгоритм имеет значительный рабочий фактор.

Если вы соли с паролями SHA512, просто добавляя (или представляющую) соль к открытому тексту, любой, кто получает свои руки на набор ваших хэшированных паролей и применяет современный инструмент трещин (http://arstechnica.com/security/2013/05/how-crackers-make-minced-mast-out-of-your-passwords/) сможет увидеть контактные значения Consateenated Password + и, вероятно, через тривиальное сопоставление шаблона, сможете отделить часть пароля из солевой части для большинства, если не все рассматриваемые аккаунты.

Я не думал об этом полностью, и я ни в коем случае не означает эксперт по безопасности, но мне кажется, что если вы должны были зашифровать (использование, например, AES256) пароль, используя соль в качестве ключа, и Тогда хэш это С SHA512 вы были бы в безопасности от уязвимости, которую я описал выше.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top