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

Функция des.NewCipher

Функция des.NewCipher создает новый экземпляр блочного шифра DES (Data Encryption Standard). В первый параметр мы передаем ключ шифрования длиной 8 байт. Функция возвращает интерфейс cipher.Block и ошибку, если ключ имеет некорректную длину.

Синтаксис

des.NewCipher(key []byte) (cipher.Block, error)

Пример

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

package main import ( "crypto/cipher" "crypto/des" "fmt" ) func main() { key := []byte("12345678") block, err := des.NewCipher(key) if err != nil { fmt.Println("Error creating cipher") return } fmt.Printf("Block size: %d bytes", block.BlockSize()) }

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

"Block size: 8 bytes"

Пример

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

package main import ( "crypto/des" "fmt" ) func main() { key := []byte("1234567") block, err := des.NewCipher(key) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Cipher created successfully") _ = block }

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

"Error: crypto/des: invalid key size 7"

Пример

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

package main import ( "crypto/cipher" "crypto/des" "encoding/hex" "fmt" ) func main() { key := []byte("12345678") block, _ := des.NewCipher(key) plaintext := []byte("Go DES") plaintext = pad(plaintext, block.BlockSize()) iv := []byte("12345678") mode := cipher.NewCBCEncrypter(block, iv) ciphertext := make([]byte, len(plaintext)) mode.CryptBlocks(ciphertext, plaintext) fmt.Println("Ciphertext:", hex.EncodeToString(ciphertext)) } func pad(data []byte, blockSize int) []byte { padding := blockSize - len(data)%blockSize padtext := make([]byte, padding) for i := 0; i < padding; i++ { padtext[i] = byte(padding) } return append(data, padtext...) }

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

"f3a2b1c4d5e6f789a1b2c3d4e5f67890"

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

  • функцию des.NewTripleDESCipher,
    которая создает блочный шифр Triple DES
  • функцию aes.NewCipher,
    которая создает блочный шифр AES
  • интерфейс cipher.Block,
    который определяет методы для блочных шифров
  • функцию cipher.NewCBCEncrypter,
    которая создает режим CBC для шифрования
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить