置换密码理论学习

来源:互联网 发布:java编写应用程序 编辑:程序博客网 时间:2024/05/17 00:53

       传统密码技术-置换密码

  置换密码将明文中的字母顺序重新排列,但字母本身不变,由此形成密文。换句话说,明文与密文所使用的字母相同,只是它们的排列顺序不同。
  我们可以将明文按矩阵的方式逐行写出,然后再按列读出,并将它们排成一排作为密文,列的阶就是该算法的密钥。在实际应用中,人们常常用某一单词作为密钥,按照单词中各字母在字母表中的出现顺序排序,用这个数字序列作为列的阶。

【例1】我们以coat作为密钥,则它们的出现顺序为2、3、1、4,对明文“attack postoffice”的加密过程见图1:

密钥coat阶2314 attackpostoffice

按照阶数由小到大,逐列读出各字母,所得密文为:
    t p o c a c s f t k t i a o f e.
  对于这种列变换类型的置换密码,密码分析很容易进行:将密文逐行排列在矩阵中,并依次改变行的位置,然后按列读出,就可得到有意义的明文。为了提高它的安全性,可以按同样的方法执行多次置换。例如对上述密文再执行一次置换,就可得到原明文的二次置换密文:
    o s t f t a t a p c k o c f i e
  还有一种置换密码采用周期性换位。对于周期为r的置换密码,首先将明文分成若干组,每组含有r个元素,然后对每一组都按前述算法执行一次置换,最后得到密文。
【例2】一周期为4的换位密码,密钥及密文同上例,加密过程如图2:

密钥coatcoatcoatcoat阶2314231423142314明文attackpostoffice密文tatapckoostfcfie

0 0