一、填充原理
PKCS7Padding填充模式原理与16的倍数进行相比,缺少多少位就填充多少位的位数值
二、java代码实现
package com.zhangzz.crypto.util;
import javax.crypto.BadPaddingException;
import java.util.Arrays;
public class PKCS7Padding {
/**
* java实现SM4 PKCS7Padding填充模式 原理:与16的倍数进行相比,缺少多少位就填充多少位的位数值
* 例:test字节数为4,填充12个0x0c;12345678字节数为8,填充8个8
*
* @param inputByte
* @return byte[]
*/
protected byte[] encodeBlock(byte[] inputByte, int baseBlockSize) throws BadPaddingException {
// 判断参数是否为空,为空抛出错误
if (isEmpty(inputByte)) {
throw new IllegalArgumentException("数据异常,填充参数为空!");
}
try {
// 获字节长度
int length = inputByte.length;
// 补齐位数
int leftLength = baseBlockSize - (length % baseBlockSize == 0 ? baseBlockSize : length % baseBlockSize);
// 定义新字节
byte[] arrayReturn = new byte[length + leftLength];
// 定义填充字节
byte