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  }