SHA512 входит в семейства SHA-2. Варианты перечислены в NIST FIPS 180-4
- SHA-512/256 truncated from SHA-512 with different initial values
- SHA-512/224 truncated from SHA-512 with different initial values
- SHA-384 truncated from SHA-512 with different initial values
- SHA-512
- SHA-224 truncated from SHA-256 with different initial values
- SHA-256
Чтобы отделить домены (называемые разделение доменов ) этих хеш-функций от их усеченной версии, отличной от начальнойзначения используются. В противном случае атака на усеченную версию может быть перенесена в другие версии, vv
С sha512.New512_256
вы на самом деле выбираете хеш-функцию из SHA-512
, и в этом случае это SHA-512/256
. Вы можете выбрать другие из списка godoc.org, посмотрев их строку.
Возможно, вам понадобится hash
, а не hmac
. HMAC - это код аутентификации сообщений на основе хеш-кода с ключом , полезный для аутентификации с помощью ключа. Каждый раз для управления хешем (или контрольной суммой) вам понадобится ключ.
Библиотека, однако, использует Sum512
или Sum512_256
и т. Д. Для вычисления контрольной суммы (хеша) заданных данных. ,Пример кода для вычисления хэша:
sha_512 := sha512.New()
sha_512.Write([]byte(input))
hash := base64.URLEncoding.EncodeToString(sha_512.Sum(nil))
На усечении
Сначала идея усечения может показаться несостоятельной ,На самом деле, это не. SHA-512 и SHA-256 имеют атаки расширения длины . Однако урезанные версии имеют сопротивление , см. Таблицу в Википедии .
Следует также отметить, что семейство SHA3 разработано так, чтобы иметь сопротивление против атак с удлинением длины. Емкость предотвращает атаки .