1 回答
TA贡献1834条经验 获得超8个赞
您的方法存在一些问题:
openssl_encrypt
,默认情况下,输出基数为 64 的编码字符串(不是十六进制)我怀疑你的(你没有包括)正在做一些意想不到的事情(因为你跳过了开始
pkcs7Pad
ciphertext
mode.CryptBlocks(ciphertext[aes.BlockSize:], plaintext)
注意:我无法复制您的结果,因为您没有包含您的结果(指向游乐场的链接是一个好主意,因为它可以确保其他人能够复制您的问题)。pkcs7Pad
我相信下面的代码会给出你正在寻找的东西(结果与php匹配 - 我没有做任何进一步的测试):
func main() {
plaintext := []byte("12345678912345678912345678900000")
key, err := base64.StdEncoding.DecodeString("cidRgzwfcgztwae/mccalIeedOAmA/CbU3HEqWz1Ejk=")
if err != nil {
panic(err)
}
iv, err := hex.DecodeString("162578ddce177a4a7cb2f7c738fa052d")
if err != nil {
panic(err)
}
plaintext = pkcs7Pad(plaintext, aes.BlockSize)
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
ciphertext := make([]byte, len(plaintext))
mode := cipher.NewCBCEncrypter(block, iv)
mode.CryptBlocks(ciphertext, plaintext)
fmt.Printf("EncryptedText %v\n", string(ciphertext))
fmt.Printf("EncryptedText as hex %v\n", hex.EncodeToString(ciphertext))
fmt.Printf("EncryptedText as base 64 %v\n", base64.StdEncoding.EncodeToString(ciphertext))
}
func pkcs7Pad(ciphertext []byte, blockSize int) []byte {
padding := blockSize - len(ciphertext)%blockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
- 1 回答
- 0 关注
- 321 浏览
添加回答
举报