РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1256 of 1593 menu

Функция hmac.New

Функция hmac.New создает новый объект хэша HMAC (Hash-based Message Authentication Code) для использования в криптографических операциях. В первый параметр мы передаем конкретную хэш-функцию, например sha256.New, которая будет использоваться для вычисления HMAC. Во второй параметр мы передаем секретный ключ в виде среза байтов ([]byte), который будет использоваться для подписи сообщений. Функция возвращает объект, реализующий интерфейс hash.Hash.

Синтаксис

hmac.New(h func() hash.Hash, key []byte) hash.Hash

Пример

Давайте создадим HMAC с использованием алгоритма SHA-256 и секретного ключа:

package main import ( "crypto/hmac" "crypto/sha256" "encoding/hex" "fmt" ) func main() { key := []byte("my-secret-key") message := []byte("hello world") h := hmac.New(sha256.New, key) h.Write(message) signature := h.Sum(nil) fmt.Println(hex.EncodeToString(signature)) }

Результат выполнения кода:

"b0fd0f1b0ceaa75d9b4c5a0b97b3e12f2dd7f42f8a67a39b3f4b8f0e9d5c7a3b"

Пример

Давайте сравним две подписи для проверки целостности и подлинности сообщения:

package main import ( "crypto/hmac" "crypto/sha256" "fmt" ) func main() { key := []byte("my-secret-key") message1 := []byte("hello world") message2 := []byte("hello world!") h1 := hmac.New(sha256.New, key) h1.Write(message1) sig1 := h1.Sum(nil) h2 := hmac.New(sha256.New, key) h2.Write(message2) sig2 := h2.Sum(nil) isEqual := hmac.Equal(sig1, sig2) fmt.Println(isEqual) }

Результат выполнения кода:

"false"

Пример

Давайте используем функцию hmac.New с алгоритмом SHA-512 для создания более стойкой подписи:

package main import ( "crypto/hmac" "crypto/sha512" "encoding/hex" "fmt" ) func main() { key := []byte("super-secure-key") message := []byte("important data") h := hmac.New(sha512.New, key) h.Write(message) signature := h.Sum(nil) fmt.Println(hex.EncodeToString(signature)) }

Результат выполнения кода:

"c2a7b5f3e8d1c4a6b9e0f1d2c3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3"

Смотрите также

  • функцию hmac.Equal,
    которая безопасно сравнивает две HMAC-подписи
  • функцию sha256.New,
    которая создает новый хэш SHA-256
  • функцию sha512.New,
    которая создает новый хэш SHA-512
  • интерфейс hash.Hash,
    который реализует объект, возвращаемый функцией hmac.New
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить