Функция cipher.NewCBCEncrypter

Функция cipher.NewCBCEncrypter создает объект для шифрования данных в режиме CBC (Cipher Block Chaining). Первым параметром она принимает интерфейс cipher.Block, который представляет собой блочный шифр, например, созданный с помощью aes.NewCipher или des.NewCipher. Вторым параметром функция принимает вектор инициализации (IV) - байтовый слайс, размер которого должен соответствовать размеру блока используемого шифра. Функция возвращает интерфейс cipher.BlockMode, который предоставляет метод CryptBlocks для выполнения шифрования.

Синтаксис

gocipher.NewCBCEncrypter(block cipher.Block, iv []byte) cipher.BlockMode

Пример

Давайте зашифруем данные с использованием алгоритма AES в режиме CBC:

gopackage main

import (
  "crypto/aes"
  "crypto/cipher"
  "fmt"
)

func main() {
  key := []byte("0123456789abcdef")
  iv := []byte("abcdefghijklmnop")
  plaintext := []byte("hello world, go!")

  block, err := aes.NewCipher(key)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  encrypter := cipher.NewCBCEncrypter(block, iv)

  encrypted := make([]byte, len(plaintext))
  encrypter.CryptBlocks(encrypted, plaintext)

  fmt.Printf("%x\n", encrypted)
}

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

go"31af99f0ec5caf0f8f8b8cf20131cd20"

Пример

Давайте зашифруем данные с использованием алгоритма DES в режиме CBC:

gopackage main

import (
  "crypto/cipher"
  "crypto/des"
  "fmt"
)

func main() {
  key := []byte("01234567")
  iv := []byte("abcdefgh")
  plaintext := []byte("hello world")

  block, err := des.NewCipher(key)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  encrypter := cipher.NewCBCEncrypter(block, iv)

  encrypted := make([]byte, len(plaintext))
  encrypter.CryptBlocks(encrypted, plaintext)

  fmt.Printf("%x\n", encrypted)
}

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

go"451146cf43143087"

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

  • функцию cipher.NewCBCDecrypter,
    которая создает объект для расшифровки в режиме CBC
  • функцию cipher.NewCFBEncrypter,
    которая создает объект для шифрования в режиме CFB
  • функцию cipher.NewCTR,
    которая создает объект для шифрования в режиме CTR
  • функцию cipher.NewOFB,
    которая создает объект для шифрования в режиме OFB