Пакет pbkdf2
Обзор
Пакет pbkdf2 реализует функцию выработки ключа PBKDF2, определённую в RFC 8018 (PKCS #5 v2.1).
Функция выработки ключа полезна при шифровании данных на основе пароля или любых других не полностью случайных данных. Она использует псевдослучайную функцию для выработки надёжного ключа шифрования на основе пароля.
Указатель
Файлы пакета
pbkdf2.go
func Key 1.24
func Key[Hash hash.Hash](h func() Hash, password string, salt []byte, iter, keyLength int) ([]byte, error)
Key вырабатывает ключ на основе пароля, соли и числа итераций и возвращает значение []byte длиной keyLength, которое можно использовать в качестве криптографического ключа. Ключ вырабатывается методом PBKDF2 с вариантом HMAC и предоставленной хеш-функцией.
Например, чтобы использовать функцию выработки ключа PBKDF2 на основе HMAC-SHA-1, можно получить выработанный ключ, например, для AES-256 (которому нужен ключ длиной 32 байта), выполнив:
dk, err := pbkdf2.Key(sha1.New, "some password", salt, 4096, 32)
Не забудьте использовать надёжную случайную соль. RFC рекомендует использовать не менее 8 байт.
Увеличение числа итераций повышает стоимость полного перебора, но также пропорционально замедляет выработку ключа.
keyLength должно быть положительным целым числом в диапазоне от 1 до (2^32 - 1) * h.Size(). Если задать keyLength вне этого диапазона, будет возвращена ошибка.
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/crypto/pbkdf2/