解密去除填充长度时超出切片范围
来源:11-4 服务端cookie身份验证
可爱的大ju
2020-08-22
经过断点发现下面这部分代码报错: http: panic serving [::1]:49570: runtime error: slice bounds out of range [:-78]
func PKCS7UnPadding(origData []byte) ([]byte,error){
//获取数据长度
length := len(origData)
//fmt.Println("长度为:",length)
if length==0{
return nil,errors.New("加密字符串错误!")
}else{
//获取填充字符串长度,aes加密的时候会把加密字符串长度附属在加密串上。因为最后一位存储的是填充的字符,同时其大小也是填充的位数
unpadding := int(origData[length-1])
//fmt.Println("origData:",origData)
//fmt.Println("unpadding长度:",unpadding)
//截取切片,删除填充字节,返回明文。
return origData[:(length-unpadding)],nil
}
}
输出发现origData长度为16,而unpadding填充长度为94
origData: [61 240 162 136 251 122 234 234 28 219 43 129 171 76 216 94]
unpadding长度: 94
比对了代码没发现不一样,不知道是哪里出错了。。。
写回答
1回答
-
Cap
2020-08-27
代码用编辑器 比对下。
00
相似问题