0

我正在尝试为以下 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)
}

这里 ciphertext 和 encryptedText 不匹配。问题是什么 ?

4

0 回答 0