PKCS#5 填充模式

PKCS#5填充模式

PKCS#5填充的定义
PKCS#5填充是PKCS#7填充的一个子集,在PKCS#7填充时BlockSize为8的时候,PKCS#5与PKCS#7填充是一样的,
在BlockSize不同时PKCS#5与PKCS#7填充是不同的,PKCS#5填充是将数据填充到8的倍数,填充后数据长度的计算公式是
定于元数据长度为x, 填充后的长度是 x + (8 - (x % 8)), 填充的数据是 8 - (x % 8)
填充数据样例

现在数据是1byte

数据数 0x41
    填充前:0x41
    填充后:0x410x070x070x070x070x070x070x07

现在数据是2byte

数据数 0x41
    填充前:0x410x41
    填充后:0x410x410x060x060x060x060x060x06

现在数据是2byte

数据数 0x41
    填充前:0x410x41
    填充后:0x410x410x060x060x060x060x060x06

现在数据是3byte

数据数 0x41
    填充前:0x410x410x41
    填充后:0x410x410x410x050x050x050x050x05

现在数据是4byte

数据数 0x41
    填充前:0x410x410x410x41
    填充后:0x410x410x410x410x040x040x040x04

现在数据是5byte

数据数 0x41
    填充前:0x410x410x410x410x41
    填充后:0x410x410x410x410x410x030x030x03

现在数据是6byte

数据数 0x41
    填充前:0x410x410x410x410x410x41
    填充后:0x410x410x410x410x410x410x020x02

现在数据是7byte

数据数 0x41
    填充前:0x410x410x410x410x410x410x41
    填充后:0x410x410x410x410x410x410x410x01

现在数据是8byte

数据数 0x41
    填充前:0x410x410x410x410x410x410x410x41
    填充后:0x410x410x410x410x410x410x410x410x080x080x080x080x080x080x080x08
填充算法java的实现
    public byte[] pkcs5_padding(byte[] source) {
        int sourceLength = source.length;
        int paddingLength = sourceLength  + (sourceLength - (sourceLength % 8));
        byte[] paddingResult = new byte[paddingLength];
        System.arrayCopy(source, 0, paddingResult, 0, sourceLength);
        for (int i = sourceLength; i < paddingLength; i++) {
            paddingResult[i] = (byte)(sourceLength - (sourceLength % 8);
        }
        return paddingResult;
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值