基本的に AES ECB モード暗号化であるアルゴリズムを Go でエミュレートしようとしています。
これが私がこれまでに持っているものです
func Decrypt(data []byte) []byte {
cipher, err := aes.NewCipher([]byte(KEY))
if err == nil {
cipher.Decrypt(data, PKCS5Pad(data))
return data
}
return nil
}
また、最初にデータをパディングする、テスト済みで機能している PKCS5Padding アルゴリズムもあります。Go AES パッケージで暗号化モードを切り替える方法に関する情報が見つかりません (ドキュメントには絶対にありません)。
このコードは別の言語で作成されているため、このアルゴリズムが正しく機能していないことがわかります。
編集:問題ページから解釈した方法は次のとおりです
func AESECB(ciphertext []byte) []byte {
cipher, _ := aes.NewCipher([]byte(KEY))
fmt.Println("AESing the data")
bs := 16
if len(ciphertext)%bs != 0 {
panic("Need a multiple of the blocksize")
}
plaintext := make([]byte, len(ciphertext))
for len(plaintext) > 0 {
cipher.Decrypt(plaintext, ciphertext)
plaintext = plaintext[bs:]
ciphertext = ciphertext[bs:]
}
return plaintext
}
これは実際にはデータを返していません。暗号化から復号化に変更するときに何かを台無しにしたのかもしれません