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

Пакет crypto/des

Пакет crypto/des предоставляет реализацию симметричных алгоритмов шифрования DES и TripleDES. DES использует 8-байтовый ключ, а TripleDES поддерживает ключи длиной 16 или 24 байта. Основной функцией пакета является des.NewCipher, которая создает новый шифровальный блок на основе переданного ключа. Также доступна функция des.NewTripleDESCipher для создания блока TripleDES с 16- или 24-байтовым ключом.

Основные функции

Пакет содержит две основные функции для создания шифровальных блоков:

  • des.NewCipher(key []byte) (cipher.Block, error) - создает шифровальный блок для алгоритма DES. Ключ должен быть длиной 8 байт.
  • des.NewTripleDESCipher(key []byte) (cipher.Block, error) - создает шифровальный блок для алгоритма TripleDES. Ключ должен иметь длину 16 или 24 байта.

Возвращаемый объект реализует интерфейс cipher.Block, который предоставляет методы BlockSize и Encrypt с Decrypt.

Синтаксис

import "crypto/des" block, err := des.NewCipher(key) block, err := des.NewTripleDESCipher(key)

Пример использования des.NewCipher

Создадим шифровальный блок DES с 8-байтовым ключом и зашифруем блок данных:

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

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

"Plaintext: 3132333435363738" "Ciphertext: 5b23401fad2c31eb"

Пример использования des.NewTripleDESCipher

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

package main import ( "crypto/des" "fmt" ) func main() { key := []byte("123456789012345678901234") plaintext := []byte("12345678") block, err := des.NewTripleDESCipher(key) if err != nil { fmt.Println("Error:", err) return } ciphertext := make([]byte, block.BlockSize()) block.Encrypt(ciphertext, plaintext) fmt.Printf("Plaintext: %x\n", plaintext) fmt.Printf("Ciphertext: %x\n", ciphertext) }

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

"Plaintext: 3132333435363738" "Ciphertext: 6e0a0b62caf12754"

Пример расшифрования с использованием des.NewTripleDESCipher

Покажем полный цикл шифрования и расшифрования с использованием TripleDES:

package main import ( "crypto/des" "fmt" ) func main() { key := []byte("123456789012345678901234") plaintext := []byte("12345678") block, err := des.NewTripleDESCipher(key) if err != nil { fmt.Println("Error:", err) return } ciphertext := make([]byte, block.BlockSize()) block.Encrypt(ciphertext, plaintext) decrypted := make([]byte, block.BlockSize()) block.Decrypt(decrypted, ciphertext) fmt.Printf("Original: %s\n", plaintext) fmt.Printf("Decrypted: %s\n", decrypted) }

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

"Original: 12345678" "Decrypted: 12345678"

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

  • функцию des.NewCipher,
    которая создает шифровальный блок DES с 8-байтовым ключом
  • функцию des.NewTripleDESCipher,
    которая создает шифровальный блок TripleDES с 16- или 24-байтовым ключом
  • пакет crypto/aes,
    который предоставляет реализацию более современного алгоритма шифрования AES
  • интерфейс cipher.Block,
    который реализуют все шифровальные блоки в пакете crypto
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить