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

Bagaimana untuk Menyahsulit Penyulitan AES ECB dengan betul dalam Go?

DDD
DDDasal
2024-11-01 07:34:30726semak imbas

How to Correctly Decrypt AES ECB Encryption in Go?

Penyulitan ECB AES dalam Go

Dalam Go, penyulitan AES dalam mod ECB boleh dicapai menggunakan pakej crypto/aes. Mod ECB ialah mod penyulitan mudah di mana setiap blok plaintext disulitkan secara berasingan, menyebabkan blok plaintext berulang menghasilkan blok disulitkan yang sama.

Mentafsir Penyulitan ECB

Go yang disediakan kod cuba menyahsulit data disulitkan AES ECB. Walau bagaimanapun, terdapat beberapa isu:

  • Dalam fungsi Nyahsulit, PKCS5Pad hendaklah digunakan sebelum menyahsulit data.
  • Fungsi AESECB mentafsir proses penyahsulitan ECB dengan betul tetapi mengandungi ralat dalam menyatakan saiz blok.

Penyahsulitan ECB yang betul dalam Go

Kod Go berikut menyediakan fungsi penyahsulitan ECB yang diperbetulkan:

<code class="go">import (
    "crypto/aes"
    "fmt"
)

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

    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>

Pertimbangan Keselamatan

Adalah penting untuk ambil perhatian bahawa mod ECB adalah tidak selamat dan tidak boleh digunakan dalam aplikasi kriptografi moden. Mod ECB mendedahkan corak dalam data teks biasa, menjadikannya mudah diserang. Mod alternatif seperti CBC atau OFB adalah lebih selamat dan harus dipertimbangkan sebaliknya.

Atas ialah kandungan terperinci Bagaimana untuk Menyahsulit Penyulitan AES ECB dengan betul dalam 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