hotime/vendor/github.com/go-pay/gopay/pkg/aes/pkcs_padding.go
2022-05-24 13:49:25 +08:00

43 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package aes
import "bytes"
// 加密填充模式(添加补全码) PKCS5Padding
// 加密时如果加密bytes的length不是blockSize的整数倍需要在最后面添加填充byte
func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
paddingCount := blockSize - len(ciphertext)%blockSize //需要padding的数目
paddingBytes := []byte{byte(paddingCount)}
padtext := bytes.Repeat(paddingBytes, paddingCount) //生成填充的文本
return append(ciphertext, padtext...)
}
// 解密填充模式(去除补全码) PKCS5UnPadding
// 解密时需要在最后面去掉加密时添加的填充byte
func PKCS5UnPadding(origData []byte) []byte {
length := len(origData)
unpadding := int(origData[length-1]) //找到Byte数组最后的填充byte
return origData[:(length - unpadding)] //只截取返回有效数字内的byte数组
}
// 加密填充模式(添加补全码) PKCS5Padding
// 加密时如果加密bytes的length不是blockSize的整数倍需要在最后面添加填充byte
func PKCS7Padding(ciphertext []byte, blockSize int) []byte {
paddingCount := blockSize - len(ciphertext)%blockSize //需要padding的数目
paddingBytes := []byte{byte(paddingCount)}
padtext := bytes.Repeat(paddingBytes, paddingCount) //生成填充的文本
return append(ciphertext, padtext...)
}
// 解密填充模式(去除补全码) PKCS7UnPadding
// 解密时需要在最后面去掉加密时添加的填充byte
func PKCS7UnPadding(origData []byte) (bs []byte) {
length := len(origData)
unPaddingNumber := int(origData[length-1]) // 找到Byte数组最后的填充byte 数字
if unPaddingNumber <= 16 {
bs = origData[:(length - unPaddingNumber)] // 只截取返回有效数字内的byte数组
} else {
bs = origData
}
return
}