github.com/binbinly/pkg@v0.0.11-0.20240321014439-f4fbf666eb0f/util/xcrypto/crypto.go (about) 1 package xcrypto 2 3 import "bytes" 4 5 func pKCS5Padding(cipherText []byte, blockSize int) []byte { 6 // 求填充长度 7 padding := blockSize - len(cipherText)%blockSize 8 // 将填充长度 重复 长度padding次,返回填充内容 9 padText := bytes.Repeat([]byte{byte(padding)}, padding) 10 // 将填充内容 添加到 需加密内容 11 return append(cipherText, padText...) 12 } 13 14 func pKCS5UnPadding(text []byte) []byte { 15 // 获取 解密内容长度 16 length := len(text) 17 // 获取反填充长度(只获取最后个byte当做长度,因为填充的时候是重复按照长度填充的) 18 paddingSize := int(text[length-1]) 19 // 截取解密内容中的原文内容 20 return text[:(length - paddingSize)] 21 }