"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minha função de criptografia AES BCE em Go não retorna nenhum dado?

Por que minha função de criptografia AES BCE em Go não retorna nenhum dado?

Publicado em 17/01/2025
Navegar:830

Why is my AES ECB Encryption Function in Go Not Returning Any Data?

Criptografia AES ECB em Go: solução de problemas e implementação

Sua tentativa inicial de implementar a criptografia AES ECB em Go encontrou alguns obstáculos. Aqui está uma explicação abrangente e uma solução de código revisada:

Preenchimento PKCS5

O preenchimento PKCS5 é crucial para a criptografia AES no modo BCE. Ele garante que o texto simples tenha um comprimento múltiplo do tamanho do bloco. Seu algoritmo PKCS5Pad existente parece estar funcionando corretamente.

Modo de criptografia

O pacote Go AES não fornece explicitamente um modo "ECB" contexto. No entanto, você pode emulá-lo descriptografando os dados em blocos de tamanho fixo:

Função criptografada revisada

func AESECB(ciphertext []byte) []byte {
    cipher, _ := aes.NewCipher([]byte(KEY))
    bs := aes.BlockSize
    if len(ciphertext)%bs != 0 {
        panic("Need a multiple of the block size")
    }
    plaintext := make([]byte, len(ciphertext))
    for len(plaintext) > 0 {
        cipher.Decrypt(plaintext, ciphertext)
        plaintext = plaintext[bs:]
        ciphertext = ciphertext[bs:]
    }
    return plaintext
}

Este código divide o texto cifrado em blocos, descriptografa cada bloco e anexa os blocos descriptografados ao buffer de texto simples.

Problema de implementação

O A função AESECB revisada não parece estar retornando nenhum dado. Certifique-se de chamá-lo corretamente e passar o texto cifrado criptografado como argumento.

Nota de segurança importante

É digno de nota que o modo BCE não é criptograficamente seguro. Blocos repetidos de texto simples sempre produzem blocos criptografados idênticos, tornando-os vulneráveis ​​a certos ataques. É altamente recomendável usar modos de operação mais seguros, como CBC, CTR ou GCM, para criptografia robusta.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3