Пакет 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 с аутентификацией