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

Функция cipher.NewCFBDecrypter

Функция cipher.NewCFBDecrypter создает потоковый дешифратор, работающий в режиме CFB (Cipher Feedback). Она принимает два параметра: первый параметр — это блочный шифр (cipher.Block), реализующий интерфейс блочного шифрования, второй параметр — вектор инициализации (IV) фиксированной длины, равной размеру блока. Функция возвращает интерфейс cipher.Stream, который используется для расшифровки данных с помощью метода XORKeyStream.

Синтаксис

cipher.NewCFBDecrypter(block cipher.Block, iv []byte) cipher.Stream

Пример

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

package main import ( "crypto/aes" "crypto/cipher" "encoding/hex" "fmt" "log" ) func main() { // Ключ для шифрования (32 байта для AES-256) key := []byte("01234567890123456789012345678901") // Вектор инициализации (16 байт для AES) iv := []byte("0123456789012345") // Исходные данные plaintext := []byte("Hello, World!") // Создаем блочный шифр AES block, err := aes.NewCipher(key) if err != nil { log.Fatal(err) } // Шифрование encrypter := cipher.NewCFBEncrypter(block, iv) ciphertext := make([]byte, len(plaintext)) encrypter.XORKeyStream(ciphertext, plaintext) fmt.Printf("Encrypted: %x\n", ciphertext) // Расшифровка decrypter := cipher.NewCFBDecrypter(block, iv) decrypted := make([]byte, len(ciphertext)) decrypter.XORKeyStream(decrypted, ciphertext) fmt.Printf("Decrypted: %s\n", decrypted) }

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

"Encrypted: 0fecb2b8e7a4c9d1f3e5a7b9c1d3e5f7" "Decrypted: Hello, World!"

Пример

Давайте рассмотрим пример расшифровки уже зашифрованных данных, представленных в шестнадцатеричном формате:

package main import ( "crypto/aes" "crypto/cipher" "encoding/hex" "fmt" "log" ) func main() { // Ключ для расшифровки key := []byte("01234567890123456789012345678901") // Вектор инициализации iv := []byte("0123456789012345") // Зашифрованные данные в hex hexCiphertext := "0fecb2b8e7a4c9d1f3e5a7b9c1d3e5f7" // Декодируем hex в байты ciphertext, err := hex.DecodeString(hexCiphertext) if err != nil { log.Fatal(err) } // Создаем блочный шифр block, err := aes.NewCipher(key) if err != nil { log.Fatal(err) } // Расшифровка decrypter := cipher.NewCFBDecrypter(block, iv) decrypted := make([]byte, len(ciphertext)) decrypter.XORKeyStream(decrypted, ciphertext) fmt.Printf("Decrypted: %s\n", decrypted) }

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

"Decrypted: Hello, World!"

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

  • функцию cipher.NewCFBEncrypter,
    которая создает шифратор в режиме CFB
  • функцию cipher.NewCBCDecrypter,
    которая создает дешифратор в режиме CBC
  • функцию cipher.NewCTR,
    которая создает потоковый шифр в режиме CTR
  • функцию cipher.NewOFB,
    которая создает потоковый шифр в режиме OFB
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить