我正在尝试写以下CCAvenue支付网关Python代码的golang代码。
def pad(data):
length = 16 - (len(data) % 16)
data += chr(length)*length
return data
def encrypt(plainText, workingKey):
iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
plainText = pad(plainText)
encDigest = md5.new ()
encDigest.update(workingKey)
enc_cipher = AES.new(encDigest.digest(), AES.MODE_CBC, iv)
encryptedText = enc_cipher.encrypt(plainText).encode('hex')
return encryptedText
以下是相关的golang代码
func Pad(text string) string {
length := aes.BlockSize - (len(text) % aes.BlockSize)
pad := string(length)
for i := 0; i < length; i++ {
text += pad
}
return text
}
func Encrypt(text, key string) string {
iv := "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
text = Pad(text)
h := md5.New()
h.Write([]byte(key))
block, err := aes.NewCipher([]byte(fmt.Sprintf("%x", h.Sum(nil))))
if err != nil {
return "ollo"
}
ciphertext := make([]byte, len([]byte(text)))
mode := cipher.NewCBCEncrypter(block, []byte(iv))
mode.CryptBlocks(ciphertext, []byte(text))
return fmt.Sprintf("%x", ciphertext)
}
这里的ciphetext和encryptedText不匹配。问题是什么?
1条答案
按热度按时间xeufq47z1#
我已经实现了加密,并在我下面提到的golang解密。