duke-git / lancet

A comprehensive, efficient, and reusable util function library of Go.
https://www.golancet.cn/en/
MIT License
4.54k stars 453 forks source link

V2 版本 AesCbcDecrypt 与 老版本(V1.2.9)不兼容 #225

Closed haiziyhf closed 2 months ago

haiziyhf commented 3 months ago

V2版本: func AesCbcDecrypt(encrypted, key []byte) []byte { size := len(key) if size != 16 && size != 24 && size != 32 { panic("key length shoud be 16 or 24 or 32") }

block, _ := aes.NewCipher(key)

iv := encrypted[:aes.BlockSize]
encrypted = encrypted[aes.BlockSize:]

mode := cipher.NewCBCDecrypter(block, iv) # iv 使用的 encrypted ,而在老版本中使用的是 key
mode.CryptBlocks(encrypted, encrypted)

decrypted := pkcs7UnPadding(encrypted)
return decrypted

}

下面是老版本: func AesCbcDecrypt(encrypted, key []byte) []byte { block, _ := aes.NewCipher(key) blockSize := block.BlockSize() blockMode := cipher.NewCBCDecrypter(block, key[:blockSize])

decrypted := make([]byte, len(encrypted))
blockMode.CryptBlocks(decrypted, encrypted)
decrypted = pkcs7UnPadding(decrypted)
return decrypted

}

duke-git commented 3 months ago

@haiziyhf 把v1版本升级到v1.4.3