天天看點

mysql aes256_微信支付(退款結果通知)golang AES-256-ECB解密

處理微信支付退款結果通知時,需要對傳回資料進行AES-256-ECB解密,golang标準庫未支援AES ECB加解密,特此記錄。

一、解密方式

解密步驟如下

對加密串A做base64解碼,得到加密串B

對商戶key做md5,得到32位小寫key* ( key設定路徑:微信商戶平台(pay.weixin.qq.com)–>賬戶設定–>API安全–>密鑰設定 )

用key*對加密串B做AES-256-ECB解密

二、Golang 示例代碼

package main

import (

"encoding/base64"

"fmt"

"strings"

"github.com/nanjishidu/gomini/gocrypto"

)

func main() {

var (

paykey = "ziR0QKsTUfMOuochC9RfCdmfHECorQAP"

req_info = `YYwp8C48th0wnQzTqeI+41pflB26v+smFj9z6h9RPBgxTyZyxc+4YNEz7QEgZNWj/6rIb2MfyWMZmCc41CfjKSssoSZPXxOhUayb6KvNSZ1p6frOX1PDWzhyruXK7ouNND+gDsG4yZ0XXzsL4/pYNwLLba/71QrnkJ/BHcByk4EXnglju5DLup9pJQSnTxjomI9Rxu57m9jg5lLQFxMWXyeASZJNvof0ulnHlWJswS4OxKOkmW7VEyKyLGV6npoOm03Qsx2wkRxLsSa9gPpg4hdaReeUqh1FMbm7aWjyrVYT/MEZWg98p4GomEIYvz34XfDncTezX4bf/ZiSLXt79aE1/YTZrYfymXeCrGjlbe0rg/T2ezJHAC870u2vsVbY1/KcE2A443N+DEnAziXlBQ1AeWq3Rqk/O6/TMM0lomzgctAOiAMg+bh5+Gu1ubA9O3E+vehULydD5qx2o6i3+qA9ORbH415NyRrQdeFq5vmCiRikp5xYptWiGZA0tkoaLKMPQ4ndE5gWHqiBbGPfULZWokI+QjjhhBmwgbd6J0VqpRorwOuzC/BHdkP72DCdNcm7IDUpggnzBIy0+seWIkcHEryKjge3YDHpJeQCqrAH0CgxXHDt1xtbQbST1VqFyuhPhUjDXMXrknrGPN/oE1t0rLRq+78cI+k8xe5E6seeUXQsEe8r3358mpcDYSmXWSXVZxK6er9EF98APqHwcndyEJD2YyCh/mMVhERuX+7kjlRXSiNUWa/Cv/XAKFQuvUYA5ea2eYWtPRHa4DpyuF1SNsaqVKfgqKXZrJHfAgslVpSVqUpX4zkKszHF4kwMZO3M7J1P94Mxa7Tm9mTOJePOoHPXeEB+m9rX6pSfoi3mJDQ5inJ+Vc4gOkg/Wd/lqiy6TTyP/dHDN6/v+AuJx5AXBo/2NDD3fWhHjkqEKIuARr2ClZt9ZRQO4HkXdZo7CN06sGCHk48Tg8PmxnxKcMZm7Aoquv5yMIM2gWSWIRJhwJ8cUpafIHc+GesDlbF6Zbt+/KXkafJAQq2RklEN+WvZ/zFz113EPgWPjp16TwBoziq96MMekvWKY/vdhjol8VFtGH9F61Oy1Xwf6DJtPw==`

)

b, err := base64.StdEncoding.DecodeString(req_info)

if err != nil {

fmt.Println(b, err)

return

}

gocrypto.SetAesKey(strings.ToLower(gocrypto.Md5(paykey)))

plaintext, err := gocrypto.AesECBDecrypt(b)

if err != nil {

fmt.Println(err)

return

}

fmt.Println(string(plaintext))

}

三、Golang 第三方庫

支援常見加解密

github.com/nanjishidu/gomini/gocrypto