【密码学】分组密码算法的工作模式(11)——填充方法示例

14 填充方法示例

14.1 概述

当明文长度不满足工作模式所规定的分组长度的整数倍时,加解密操作方需要协商一个明文填充方法,满足以下性质:
a)对于任意长度的非空明文输入,能够输出满足工作模式规定的分组长度的明文分组序列;
b)不同的非空明文输入无法输出相同的明文分组序列,即填充后的非空明文输入总是唯一的。
需要注意的是,填充方法的选择将影响到工作模式的安全强度,有必要专门分析确定。

14.2 填充方法1

以字节为基本单位,在明文字节串 P P P的右侧填充 a a a个字节“a”,其中“a”表示 P P P的最后一个分组达到分组长度所需要的字节数。如果 P P P为空串或其最后一个分组正好为分组长度,那么填充方法1规定在 P P P右侧填充一个由 b b b个字节“b”构成的分组,其中“b”表示一个明文分组所需要的字节数目。
例如:
P P P为00112233445566778899,则填充之后为00112233445566778899060606060606;
P P P为00112233445566778899AABBCCDDEEFF,则填充之后为00112233445566778899AABBCCDDEEFF10101010101010101010101010101010。

14.3 填充方法2

在明文比特串 P P P的右侧填充一个比特“1”,然后在所得到的比特串右侧填充“0”,尽可能少填充(甚至不填充),使填充后的比特串的长度是 j j j的正整数倍。如果 P P P是空串,那么填充方法2规定对其填充一个“1”,然后在其右侧填充 j − 1 j-1 j1个“0”。
例如:若 j = 128 j=128 j=128
P P P为00112233445566778899,则填充之后为0011223344556677889980||Zero(40);
P P P为00112233445566778899AABBCCDDEEFF,则填充之后为00112233445566778899AABBCCDDEEFF 80||Zero(120)。

14.4 填充方法3

在明文比特串 P P P的右侧填充“0”,尽可能少填充(甚至不填充),使填充后比特串的长度是 j j j的正整数倍。然后再所得到的明文比特串左侧填充一个分组 L L L。分组 L L L由尽可能少的“0”和明文比特串 P P P的长度 L p L_p Lp的二进制表示组成,其中位于 L p L_p Lp二进制表示的左侧的“0”尽可能少,且使 L L L的长度为 j j j比特。 L L L最右端的比特和 L p L_p Lp的二进制表示中的最低位相对应。如果是空串,那么填充方法3规定对其填充 j j j个“0”,然后在其左侧填充一个由 j j j个“0”组成的分组 L L L
例如:若 j = 128 j=128 j=128
P P P为00112233445566778899,则填充之后为Zero(120)||0A00112233445566778899||Zero(48);
P P P为00112233445566778899AABBCCDDEEFF,则填充之后为Zero(120)||1000112233445566778899AABBCCDDEEFF。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值