Функция des.NewTripleDESCipher
Функция des.NewTripleDESCipher создает новый экземпляр шифра TripleDES
(также известного как 3DES) на основе предоставленного ключа. Она возвращает
интерфейс cipher.Block, который предоставляет методы для шифрования
и дешифрования блоков данных. В качестве параметра функция принимает
байтовый срез key длиной 24 байта (192 бита), который
будет использоваться для всех трех этапов шифрования DES.
Синтаксис
des.NewTripleDESCipher(key []byte) (cipher.Block, error)
Пример
Давайте создадим шифр TripleDES с использованием 24-байтового ключа:
package main
import (
"crypto/des"
"fmt"
"log"
)
func main() {
key := []byte("123456789012345678901234") // 24 bytes for TripleDES
block, err := des.NewTripleDESCipher(key)
if err != nil {
log.Fatal(err)
}
fmt.Printf("TripleDES cipher created successfully, block size: %d", block.BlockSize())
}
Результат выполнения кода:
"TripleDES cipher created successfully, block size: 8"
Пример
Давайте зашифруем и расшифруем блок данных с помощью TripleDES:
package main
import (
"crypto/des"
"crypto/cipher"
"fmt"
"log"
)
func main() {
key := []byte("123456789012345678901234")
block, err := des.NewTripleDESCipher(key)
if err != nil {
log.Fatal(err)
}
plaintext := []byte("12345678") // 8 bytes for DES block
ciphertext := make([]byte, len(plaintext))
encrypted := make([]byte, len(plaintext))
// Encrypt
block.Encrypt(ciphertext, plaintext)
fmt.Printf("Encrypted: %x\n", ciphertext)
// Decrypt
block.Decrypt(encrypted, ciphertext)
fmt.Printf("Decrypted: %s\n", encrypted)
}
Результат выполнения кода:
"Encrypted: 6bc1bee22e409f96"
"Decrypted: 12345678"
Пример
Давайте обработаем ошибку при создании шифра с неверной длиной ключа:
package main
import (
"crypto/des"
"fmt"
"log"
)
func main() {
key := []byte("12345678") // Invalid key length (8 bytes)
block, err := des.NewTripleDESCipher(key)
if err != nil {
log.Printf("Error: %v", err)
return
}
fmt.Printf("Block: %v", block)
}
Результат выполнения кода:
"Error: crypto/des: invalid key size 8"
Смотрите также
-
функцию
des.NewCipher,
которая создает шифр для обычного DES -
интерфейс
cipher.Block,
который предоставляет методы для блочного шифрования -
интерфейс
cipher.BlockMode,
который определяет режимы блочного шифрования -
интерфейс
cipher.AEAD,
который предоставляет аутентифицированное шифрование с дополнительными данными