PKCS7填充算法
软件开发过程中经常需要对数据进行加密,常见的加密算法的数据处理方式主要分为两类
- 流加密
- 块加密
其中块加密算法因对明文以块大小进行分割加密,因此常常需要补齐长度,这里简单记录下一种常用的PKCS7填充算法(以Go语言为例)
import "bytes"
Const(
BlockSize = 8
)
func Pkcs7Padding(plain []byte){
// 获取填充大小
paddingSize := BlockSize - len(plain)%BlockSize
// 用填充大小作为内容填充到末尾
padText := bytes.Repeat([]byte(byte(paddingSize)),paddingSize)
return append(plain,padText...)
}
func Pkcs7Unpadding(source []byte){
// 获取总长度
length := len(source)
// 获取末尾最后一个byte(即填充大小)
paddingSize := int(source[length-1])
return source[:length-paddingSize]
}
