列置换密码的加密方法就是将明文按行填写到一个列宽固定(设为n)的表格或长方形中;然后按(1,2,…,n)的一个置换π交换列的位置次序,再按列读出即得密文。
解密时,将密文按列填写到一个行数固定(也为n)的表格或长方形中,按置换π的逆置换交换列的位置次序,然后按行读出即得到明文。置换π可看成是该算法的密钥。
【例2-9】 设明文Alice is a murderer,列宽n=4,密钥π是按3,4,2,1列的次序读出得到密文,试写出加密/解密的过程和结果。
【解析】 明文为Alice is a murderer,加密过程中,将明文按4个字母一行写出
按列3,4,2,1写出密文:isrecadrliuraeme。
解密过程:将密文isrecadrliuraeme按4个字母一列写出按列4,3,1,2一行一行地书写,得出明文为:alice is a murderer。
这里介绍一种典型的柱状列置换密码。柱状列置换密码是使用特定的密钥来指定置换的一种密码体制。它没有直接指定置换π,而是先选取一个密钥短语,再生成一个数字序列,根据数字序列来交换列,重排字母得到密文。
例如,指定密钥长度为8的置换,首先选择长度大于8个字母的密钥,然后删除密钥中的空格,保留前8个字母并丢弃剩余部分。如密钥短语为“good cryptosystem”,选的密钥为“goodcryp”。随后,将这8个字母按字母表{a,b,…,z}的顺序编号,因为不存在字母“a”、“b”,所以字母“c”被编号为1;字母“d”被编号为2;字母“g”被编号为3,根据字母表顺序,串中出现的下一个字母是“o”,所以它们被编号为4、5。对所有字母编号的结果是 g o o d c r y p(www.xing528.com)
3 4 5 2 1 7 8 6
数字序列“3,4,5,2,1,7,8,6”指定了一个字母重排序列。如果用柱状列置换密码加密明文消息时,可以先将明文排列成一个具有8列和若干行的长方形,再将每一列根据列号由小到大进行排序,最后逐列读取字母以生成密文。
【例2-10】 已知明文消息为This should be encrypted with caution,试用密钥为goodcryp的柱状列置换密码对其进行加密。
密钥“goodcryp”指定了一个数字序列“3,4,5,2,1,7,8,6”,将明文排列成一个具有8列和4行的长方形。
将每一列根据列号由小到大进行排序,逐列读取4个字母为一组,生成的密文为
sedt seeu tlyh hdpc ibta urtn hnwi ocio
柱状列置换密码不是非常安全。如果破译者能猜出列数,那么根据常见双字母组合的位置能够完全猜出所使用的置换。2.3节中将详细讨论一种破译柱状列置换密码的方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。