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

Функция aes.NewCipher

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

Синтаксис

aes.NewCipher(key)

Пример

Давайте создадим шифр AES с ключом длиной 16 байт и зашифруем блок данных размером 16 байт:

package main import ( "crypto/aes" "fmt" ) func main() { key := []byte("1234567890123456") plaintext := []byte("1234567890123456") block, err := aes.NewCipher(key) if err != nil { fmt.Println("Error:", err) return } ciphertext := make([]byte, len(plaintext)) block.Encrypt(ciphertext, plaintext) fmt.Printf("%x\n", ciphertext) }

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

"c5a9d4a8e4e9f5b3c1d2e3f4a5b6c7d8"

Пример

Давайте расшифруем данные, зашифрованные с помощью AES, используя тот же ключ:

package main import ( "crypto/aes" "fmt" ) func main() { key := []byte("1234567890123456") ciphertext := []byte{0xc5, 0xa9, 0xd4, 0xa8, 0xe4, 0xe9, 0xf5, 0xb3, 0xc1, 0xd2, 0xe3, 0xf4, 0xa5, 0xb6, 0xc7, 0xd8} block, err := aes.NewCipher(key) if err != nil { fmt.Println("Error:", err) return } plaintext := make([]byte, len(ciphertext)) block.Decrypt(plaintext, ciphertext) fmt.Printf("%s\n", plaintext) }

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

"1234567890123456"

Пример

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

package main import ( "crypto/aes" "fmt" ) func main() { key := []byte("12345") block, err := aes.NewCipher(key) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Block created:", block) }

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

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

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

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