加密签名算法之对称加密的数据填充

一、ISO9797_M1
以DES为例,8字节为一块,块对齐加密。如果数据不够8的倍数,则再后面补00,直到满足8的倍数,但如果数据满足8的倍数,则需要再后面再补8字节的0x00

填充前 D5 37 11 F4 C8
填充后 D5 37 11 F4 C8 00 00 00

填充前 D5 37 11 F4 C8 A1 66 8D
填充后 D5 37 11 F4 C8 A1 66 8D 00 00 00 00 00 00 00 00

AES和DES同理,只是AES是以16字节为一块。

二、ISO9797_M2
以DES为例,8字节为一块,块对齐加密。如果数据不够8的倍数,则再后面补一个字节0x80,如果满足8的倍数,则填充完成,但如果补了一个字节0x80,还不满足8的倍数的话,那么后续接着补0x00,直到满足8的倍数。但如果数据一开始就满足8的倍数,则需要再后面再补一字节0x80和7字节0x00

填充前 D5 37 11 F4 C8
填充后 D5 37 11 F4 C8 80 00 00

填充前 D5 37 11 F4 C8 A1 66
填充后 D5 37 11 F4 C8 A1 66 80

填充前 D5 37 11 F4 C8 A1 66 8D
填充后 D5 37 11 F4 C8 A1 66 8D 80 00 00 00 00 00 00 00

AES和DES同理,只是AES是以16字节为一块。
三、PKCS5
以DES为例,8字节为一块,块对齐加密。如果数据不够8的倍数,还差N个数据,则再后面补N个字节的N,如果满足8的倍数,则填充8字节的0x8

填充前 D5 37 11 F4 C8
填充后 D5 37 11 F4 C8 03 03 03

填充前 D5 37 11 F4 C8 A1 66
填充后 D5 37 11 F4 C8 A1 66 01

填充前 D5 37 11 F4 C8 A1 66 8D
填充后 D5 37 11 F4 C8 A1 66 8D 08 08 08 08 08 08 08 08

AES和DES同理,只是AES是以16字节为一块。

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef char s8;
typedef short s16;
typedef int s32;

s32 addISO9797M2Pad(u8* buffer, s32 bufferlen, s32 blocklen) {
   
    s32 padlen = bufferlen%blocklen 
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值