Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyahsulit AES dalam Mod ECB dengan Go?

Bagaimana untuk Menyahsulit AES dalam Mod ECB dengan Go?

DDD
DDDasal
2024-11-01 09:41:30153semak imbas

How to Decrypt AES in ECB Mode with Go?

Menyahsulit AES dalam Mod ECB dengan Go

Soalan:

Anda menghadapi masalah semasa melaksanakan penyulitan mod AES ECB dalam Go. Secara khususnya, anda tidak pasti cara menukar mod penyulitan dalam pakej crypto/aes dan kod anda pada masa ini tidak memberikan hasil yang betul.

Jawapan:

Memahami Mod ECB:

Buku Kod Elektronik (ECB) ialah mod penyulitan mudah di mana setiap blok data disulitkan secara bebas menggunakan algoritma AES. Data dibahagikan kepada blok bersaiz tetap (biasanya 16 bait untuk AES) dan setiap blok disulitkan dengan kunci penyulitan yang sama.

Melaksanakan Penyahsulitan Mod ECB dalam Go:

Untuk menyahsulit data AES dalam mod ECB menggunakan pakej crypto/aes Go, anda boleh menggunakan kod berikut:

<code class="go">package main

import (
    "crypto/aes"
)

func DecryptAes128Ecb(data, key []byte) []byte {
    cipher, _ := aes.NewCipher([]byte(key))
    decrypted := make([]byte, len(data))

    // Define the block size
    size := 16

    // Iterate over the data and decrypt each block
    for bs, be := 0, size; bs < len(data); bs, be = bs+size, be+size {
        cipher.Decrypt(decrypted[bs:be], data[bs:be])
    }

    return decrypted
}</code>

Nota tentang Keselamatan Mod ECB:

Walaupun mod ECB adalah mudah untuk dilaksanakan, adalah penting untuk ambil perhatian bahawa ia secara amnya dianggap tidak selamat. Ini kerana blok teks biasa yang berulang akan sentiasa menyulitkan kepada blok teks sifir yang sama, menjadikan corak dalam data mudah dikesan. Atas sebab ini, mod ECB biasanya tidak disyorkan untuk kegunaan praktikal.

Atas ialah kandungan terperinci Bagaimana untuk Menyahsulit AES dalam Mod ECB dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn