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 }