Files
xgcl/utils/padding/padding.go
T
2026-05-27 23:03:00 +08:00

30 lines
744 B
Go

package padding
const (
MIN_BLOCK_SIZE = 8
MAX_BLOCK_SIZE = 128
)
type Padding interface {
// Pad 补码,一般用法 data = Pad(data, sm4.ByteSize),
// 但返回时dst和src可能内存地址相同,也可能不同。
Pad(src []byte, blockSize int) (dst []byte)
// Unpad 去补码,一般用法 data = Unpad(data, sm4.ByteSize),
// 如出错,则dst = src,不改变src。
Unpad(src []byte, blockSize int) (dst []byte, err error)
}
var P7 Padding = P7Padding{}
var P5 Padding = P5Padding{}
var None Padding = NonePadding{}
type NonePadding struct{}
func (NonePadding) Pad(src []byte, blockSize int) (dst []byte) {
return src
}
func (NonePadding) Unpad(src []byte, blockSize int) (dst []byte, err error) {
return src, nil
}