Функция cipher.NewCBCEncrypter
Функция cipher.NewCBCEncrypter создает объект для шифрования данных в режиме CBC (Cipher Block Chaining). Первым параметром она принимает интерфейс cipher.Block, который представляет собой блочный шифр, например, созданный с помощью aes.NewCipher или des.NewCipher. Вторым параметром функция принимает вектор инициализации (IV) - байтовый слайс, размер которого должен соответствовать размеру блока используемого шифра. Функция возвращает интерфейс cipher.BlockMode, который предоставляет метод CryptBlocks для выполнения шифрования.
Синтаксис
cipher.NewCBCEncrypter(block cipher.Block, iv []byte) cipher.BlockMode
Пример
Давайте зашифруем данные с использованием алгоритма AES в режиме CBC:
package 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)
}
Результат выполнения кода:
"31af99f0ec5caf0f8f8b8cf20131cd20"
Пример
Давайте зашифруем данные с использованием алгоритма DES в режиме CBC:
package 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)
}
Результат выполнения кода:
"451146cf43143087"
Смотрите также
-
функцию
cipher.NewCBCDecrypter,
которая создает объект для расшифровки в режиме CBC -
функцию
cipher.NewCFBEncrypter,
которая создает объект для шифрования в режиме CFB -
функцию
cipher.NewCTR,
которая создает объект для шифрования в режиме CTR -
функцию
cipher.NewOFB,
которая создает объект для шифрования в режиме OFB