ホームページ  >  記事  >  バックエンド開発  >  Go で AES ECB 暗号化を正しく復号化する方法?

Go で AES ECB 暗号化を正しく復号化する方法?

DDD
DDDオリジナル
2024-11-01 07:34:30726ブラウズ

How to Correctly Decrypt AES ECB Encryption in Go?

Go での AES ECB 暗号化

Go では、crypto/aes パッケージを使用して ECB モードでの AES 暗号化を実現できます。 ECB モードは、平文の各ブロックが個別に暗号化される単純な暗号化モードであり、平文ブロックが繰り返されて同一の暗号化ブロックが生成されます。

ECB 暗号化の解読

提供されている Goコードは、AES ECB 暗号化データを復号化しようとします。ただし、いくつかの問題があります。

  • 復号化関数では、データを復号化する前に PKCS5Pad を適用する必要があります。
  • AESECB 関数は ECB 復号化プロセスを正しく解釈しますが、エラーが含まれます。

Go での正しい ECB 復号化

次の Go コードは、修正された ECB 復号化関数を提供します。

<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>

セキュリティに関する考慮事項

ECB モードは安全ではないため、最新の暗号化アプリケーションでは使用すべきではないことに注意することが重要です。 ECB モードでは平文データのパターンが明らかになるため、攻撃を受けやすくなります。 CBC や OFB などの代替モードはより安全であるため、代わりに検討する必要があります。

以上がGo で AES ECB 暗号化を正しく復号化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。