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

Пакет crypto/subtle

Пакет crypto/subtle предоставляет функции для выполнения чувствительных к безопасности операций, которые должны быть устойчивы к атакам по времени. В первый параметр функции ConstantTimeCompare мы передаем первый слайс байт, во второй параметр - второй слайс байт, которые необходимо сравнить. Функция возвращает целое число 1, если слайсы равны, и 0 в противном случае, причем время выполнения не зависит от содержимого сравниваемых данных.

Синтаксис

subtle.ConstantTimeCompare(x, y []byte) int

Пример ⁅n="sect"⁆

Давайте сравним два одинаковых слайса байт с помощью функции ConstantTimeCompare:

package main import ( "crypto/subtle" "fmt" ) func main() { a := []byte("secret") b := []byte("secret") res := subtle.ConstantTimeCompare(a, b) fmt.Println(res) }

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

1

Пример ⁅n="sect"⁆

Давайте сравним два разных слайса байт:

package main import ( "crypto/subtle" "fmt" ) func main() { a := []byte("secret") b := []byte("password") res := subtle.ConstantTimeCompare(a, b) fmt.Println(res) }

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

0

Пример ⁅n="sect"⁆

Функция ConstantTimeCompare часто используется для безопасного сравнения хешей паролей:

package main import ( "crypto/sha256" "crypto/subtle" "fmt" ) func main() { expectedPassword := []byte("mysecretpassword") userPassword := []byte("mysecretpassword") expectedHash := sha256.Sum256(expectedPassword) userHash := sha256.Sum256(userPassword) if subtle.ConstantTimeCompare(expectedHash[:], userHash[:]) == 1 { fmt.Println("password match") } else { fmt.Println("password mismatch") } }

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

"password match"

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

  • функцию sha256.Sum256,
    которая вычисляет SHA-256 хеш данных
  • функцию hmac.Equal,
    которая безопасно сравнивает HMAC подписи
  • функцию sha512.Sum512,
    которая вычисляет SHA-512 хеш данных
  • пакет crypto/subtle,
    для криптографически безопасных операций
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить