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

Пакет crypto/aes

Пакет crypto/aes предоставляет функции для создания шифровальных блоков AES, которые могут быть использованы в различных режимах шифрования. Основная функция пакета - NewCipher, которая создает новый шифровальный блок на основе секретного ключа. В качестве первого параметра она принимает срез байтов ключа длиной 16, 24 или 32 байта (для AES-128, AES-192 и AES-256 соответственно), а возвращает интерфейс cipher.Block, если ключ корректен, или ошибку, если ключ имеет недопустимую длину.

Синтаксис

aes.NewCipher(key []byte) (cipher.Block, error)

Пример

Давайте создадим новый шифровальный блок AES-128 с использованием 16-байтового ключа:

package main import ( "crypto/aes" "fmt" ) func main() { key := []byte("1234567890123456") // 16 bytes for AES-128 block, err := aes.NewCipher(key) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Block size:", block.BlockSize()) } }

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

"Block size: 16"

Пример

Рассмотрим пример использования ключа недопустимой длины. Попробуем создать шифровальный блок с 8-байтовым ключом:

package main import ( "crypto/aes" "fmt" ) func main() { key := []byte("12345678") // Invalid key length block, err := aes.NewCipher(key) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Block size:", block.BlockSize()) } }

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

"Error: crypto/aes: invalid key size 8"

Пример

Пакет crypto/aes также предоставляет константы для размеров блока. Размер блока AES всегда составляет 16 байт:

package main import ( "crypto/aes" "fmt" ) func main() { fmt.Println("AES block size:", aes.BlockSize) key := []byte("1234567890123456") block, _ := aes.NewCipher(key) fmt.Println("Encryption block size:", block.BlockSize()) }

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

"AES block size: 16" "Encryption block size: 16"

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

  • функцию cipher.NewCBCEncrypter,
    которая создает шифровальщик в режиме CBC
  • функцию cipher.NewCFBEncrypter,
    которая создает шифровальщик в режиме CFB
  • функцию cipher.NewCTR,
    которая создает шифровальщик в режиме CTR
  • функцию cipher.NewGCM,
    которая создает шифровальщик в режиме GCM с аутентификацией
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить