Как sha512 может создавать хэши больше, чем строка, с которой он поставляется?
Мне показалось странным, что sha512
может создать строку, намного меньшую, чем та, с которой она поставляется.
Вот пример (в Python):
Python 3.6.0 (default, Jan 13 2017, 00:00:00)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> string='-'*10000
>>> hash=hashlib.sha512(string.encode('utf-8'))
>>> hash.hexdigest()
'0d1e23b51e718f4e67c371a16e0f91fefce2802c0b674374e0e0e3309f0e10936a3b96aa0e29d44ad0ba23d0a019f3ff57bfd260b2ed4b6a06c2d343a6dc1800'
>>> len(string)
10000
>>> len(hash.hexdigest())
128
Как можно создать хэш, в 78 раз меньший, чем необработанная строка?
1 ответ
Решение
SHA-256 необратим, поэтому он может быть короче. Но реальный ответ - Google SHA-256 (или другой криптографический хеш) и изучите код. Вот реальный пример хэша. Клуб бутылок имеет более 1000 членов, но имеет только 100 корзин для хранения бутылок. Он просто использует последние 2 цифры идентификатора членства для номера корзины, простой хеш. Это уменьшает бутылку 1000+ до 100 ям.
См. Семейство SHA-2 для получения подробной информации и псевдокода.