列置换密码(Column Permutation Cipher)

Colu Permutation - 列置换密码(Column Permutation Cipher)

列置换密码原理:Column Permutation Cipher属于置换密码的一种,其加密过程大致如下:把明文按某一顺序排列成一个矩阵,其中不足部分用符号Φ填充。然后按另一顺序选出矩阵中的字母以形成密文,最后截成固定长度的字母组成密文。由加密过程可知,改变矩阵的大小和选出顺序可以得到不同形式的密码。

编程实现思路:要实现Column Permutation Cipher的加密/解密,关键是构造明文/密文矩阵并能够得到一个合适的选出规则。在编程中通过输入一串英文字符来完成以上操作,具体步骤为:首先选用一串英文字符作为密钥,构造的矩阵的列数与字符串长度保持一致,明文/密文的长度不足以构造矩阵的则用Φ填充。按照字母的字典顺序给密钥字母编号,对于重复的字母,谁的位置靠前,谁的编号就靠前。于是我们就得到一组与密钥词语对应的数字序列。最后据此数字序列中的数字顺序按列选出明文/密文。

程序流程图:

ProgramDia - 列置换密码(Column Permutation Cipher)

加密代码实现:

Colu Permu encry - 列置换密码(Column Permutation Cipher)

解密代码实现:

Colu Permu decry - 列置换密码(Column Permutation Cipher)

思考:

1. Column permutation cipher 的原理是什么?

答:Column Permutation Cipher属于置换密码的一种,其原理如下:把明文按行填充排列成一个矩阵,其中不足部分用符号Φ填充。然后按预定顺序按列读取形成密文。

2. 给定关键字为“experiment”,加密矩阵将包括几列,以及列置换的次序是什么?

答:加密矩阵将包括10列,列置换次序为:1-10-7-2-8-4-5-3-6-9.

3. Column permutation cipher的安全性增强方法是什么?

答:进行双重换位加密。先用列换位法将明文加密,然后再次利用列换位法将第一次换位加密的密文加密。经过两次换位后,明文字母的位置完全被打乱了,从而可以增强安全性。

(编译运行环境:g++ [Debian 7.3.0-19] 7.3.0)



说点什么

avatar
250
  关注  
提醒