1. 簽名加密對比
sha1(sort(token暑诸、timestamp欠动、nonce膝迎、msg_encrypt))
sort表示的是這四個(gè)所對應(yīng)的值的排序碳锈,而非K排序,排序結(jié)果和簽名作對比
golang 例子:
func getSign(array ...string) string{
strs:=array[:]
sort.Strings(strs)
signStr:=strings.Join(strs,"")
sn:=sha1.New()
sn.Write([]byte(signStr))
signData:=sn.Sum(nil)
return fmt.Sprintf("%+x",signData)
}
2. aes key:
需要將aesKey進(jìn)行解密忘嫉,解密是需要在原EncodingAESKey后增加=,然后在將aes作base64解密
注意:解密結(jié)果不需要轉(zhuǎn)換成字符串
3. aes加密方式:
aes-cbc加密方式,作pksc7解包妆艘,iv為key的前十六位
go 例子:
func AesDecrypt(src, key []byte) (dst []byte, err error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
iv := make([]byte, aes.BlockSize)
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
return nil, err
}
dst = make([]byte, len(src))
cipher.NewCBCDecrypter(block, iv).CryptBlocks(dst, src)
return PKCS7UnPad(dst), nil
}
// PKCS7UnPad PKSC#7解包
func PKCS7UnPad(msg []byte) []byte {
length := len(msg)
padlen := int(msg[length-1])
return msg[:length-padlen]
}