Функция des.NewTripleDESCipher

Функция des.NewTripleDESCipher создает новый экземпляр шифра TripleDES (также известного как 3DES) на основе предоставленного ключа. Она возвращает интерфейс cipher.Block, который предоставляет методы для шифрования и дешифрования блоков данных. В качестве параметра функция принимает байтовый срез key длиной 24 байта (192 бита), который будет использоваться для всех трех этапов шифрования DES.

Синтаксис

godes.NewTripleDESCipher(key []byte) (cipher.Block, error)

Пример

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

gopackage 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())
}

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

go"TripleDES cipher created successfully, block size: 8"

Пример

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

gopackage 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)
}

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

go"Encrypted: 6bc1bee22e409f96"
"Decrypted: 12345678"

Пример

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

gopackage 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)
}

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

go"Error: crypto/des: invalid key size 8"

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

  • функцию des.NewCipher,
    которая создает шифр для обычного DES
  • интерфейс cipher.Block,
    который предоставляет методы для блочного шифрования
  • интерфейс cipher.BlockMode,
    который определяет режимы блочного шифрования
  • интерфейс cipher.AEAD,
    который предоставляет аутентифицированное шифрование с дополнительными данными