首页 > 计算机技术 > 古典密码算法-Kaiser(恺撒)密码
2011
02-22

古典密码算法-Kaiser(恺撒)密码

 一.Kaiser(恺撒)密码

    Kaiser密码是传统的代替加密法,当没有发生加密(即没有发生移位)之前,其置换表如 1-1-1所示。

表1-1-1

    加密时每一个字母向前推移k位,例如k=5,置换表如1-1-2所示。

表1-1-2

    于是对明文:data security has evolved rapidly
    可以得到密文:IFYF XJHZWNYD MFX JATQAJI WFUNIQD
    若令26个字母分别对应整数 0 ~ 25,如表 1-1-3所示。

表1-1-3

    则Kaiser加密变换实际上是
        c = (m + k) mod 26
    其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也称为密钥。
    很容易得到相应的Kaiser解密变换是:
        m = D(c) = (c – k) mod 26
    例如明文:data security 对应的数据序列:
        3  0  19  0  18  4  2  20  17  8  19  24
    k = 5 时得到密文序列:
        8  5  24  5  23  9  7  25  22  13  24  3
    对应的密文为:
        I  F  Y  F  X  J  H  Z  W  N  Y  D
二.单表置换密码
    单表置换密码也是一种传统的代替密码算法,在算法中维护着一个置换表,这个置换表记录了明文和密文的对照关系。当没有发生加密(即没有发生置换)之前,其置换表如 1-1-4所示。 

表1-1-4

    在单表置换算法中,密钥是由一组英文字符和空格组成的,称之为密钥词组,例如当输入密钥词组:I LOVE MY COUNTRY后,对应的置换表如表 1-1-5所示。

表1-1-5

    在表1-1-5中 ILOVEMYCUNTR 是密钥词组 LOVE MY COUNTRY 略去前面已出现过的字符O和Y依次写下的。后面ABD……WXZ则是密钥词组中未出现的字母按照英文字母表顺序排列成的,密钥词组可作为密码的标志,记住这个密钥词组就能掌握字母加密置换的全过程。
    这样对于明文:data security has evolved rapidly,按照表1-1-5的置换关系,就可以得到密文:VIKI JEOPHUKX CIJ EQDRQEV HIFUVRX。

 

    本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。    首先使用“快照X”恢复Windows系统环境。一.手动完成Kaiser密码    (1)在实验原理部分我们已经了解了Kaiser密码的基本原理,那么请同学们写出当密钥k=3时,对应明文:data security has evolved rapidly的密文:_____________________________。    (2)进入实验平台,单击工具栏中的“工具箱”按钮,打开实验工具箱,在向导区点击“Kaiser密码”。在明文输入区输入明文:data security has evolved rapidly。将密钥k调节到3,查看相应的密文,并与你手动加密的密文进行比较。    请根据密钥验证密文与明文对应关系是否正确。二.Kaiser加密    (1)本机进入“工具箱”|“加密解密”|“Kaiser密码”,在明文输入区输入明文(明文应为英文),单击“加密”按钮进行加密。    请将明文记录在这里:_____________________________。    (2)调节密钥k的微调按钮或者对照表的移位按钮,选择合适的密钥k值,并记下该密钥k值以用于同组主机的解密。加密工作完成后,单击“导出”按钮将密文默认导出到Kaiser共享文件夹(D:\Work\Encryption\Kaiser\)中,默认文件名为Kaiser密文.txt。    (3)通知同组主机接收密文,并将密钥k通告给同组主机。    (4)单击“导入”按钮,从共享文件夹中将同组主机的密文导入(即在文件名输入框中填写:同组主机IP\Work\Encryption\Kaiser\Kaiser密文.txt)。    (5)调节密钥k的微调按钮或者对照表的移位按钮将k设为同组主机加密时的密钥k值,这时解密已经成功。请将明文写出:_________。    (6)主机B将解密后的明文与主机A记录的明文比较,请对比明文是否相同。三.Kaiser密码分析     (1)本机进入“工具箱”|“加密解密”|“Kaiser密码”,在明文输入区输入明文(要求明文有一定的意义以便让同组主机分析)。    请将明文记录在这里:_____________________________________。    (2)调节密钥k的微调按钮或者对照表的移位按钮,选择合适的密钥k值完成Kaiser加密,单击“导出”按钮,将密文默认导出到Kaiser共享文件夹中。    (3)通告同组主机(不要通告密钥值k)密文已经放在共享文件夹中,让同组主机获取密文。    (4)单击“解密”按钮进入密文解密状态,从同组主机的Kaiser共享文件夹中将密Kaiser文导入。    (5)调节密钥k的微调按钮或者对照表的移位按钮来调节密钥,从而进行密码分析(平均13次,最坏26次破解)。请将破解出的明文和密钥记录在这里:     密钥k=_________。    明文_____________________________________________。    (6)将破解后的密钥和明文与同组主机记录的密钥和明文比较。如果不同请调节主机B的密钥k继续破解。四.单表置换密码    (1)本机进入“工具箱”|“加密解密”|“单表置换”|“加密”页面,与同组主机协商好一个密钥词组k=_________。    (2)根据“单表置换”实验原理计算出置换表。    (3)计算完成置换表以后,在明文输入区输入明文,单击“加密”按钮用置换表的对应关系对明文进行加密,加密完成后,单击“导出”按钮,将密文导出到SingleTable共享目录中,并通告同组主机获取密文。    请将明文记录在这里:______________________________________________________。    (4)单击“导入”按钮将同组主机单表置换密文导入,根据同组主机置换表完成本机置换表,单击“解密”按钮对密文进行解密。    (5)本机将解密后的明文与同组主机记录的明文对照,如果双方的明文一致,则说明实验成功,否则说明本机或同组主机的置换表计算错误。五.单表置换密码分析    (1)表1-1-1是由统计学得出的英文字母相对频率表。表1-1-1    由表1-1-1可以看出,英文字母E出现的频率最高,而J和Z出现的频率最低,这样,就可以通过英文字母出现的频率大致上判定单表置换密码的置换表,从而得到明文。    (2)本机进入“工具箱”|“加密解密”|“单表置换”|“密码分析”页面,单击“导入”按钮,将密文“单表置换密码分析密文.txt”导入,单击“统计”按钮,统计密文中每个字母出现的频率,回答下列问题:    在密文中出现频率最高的字母是_________。    与上表比较,它可能是由字母_________置换的。    (3)置换表组框中点击“解密”按钮,这时将得到一个明文。然而此时的明文并不是最终要得到的,可以通过明文的特征和各个字母的比例来调节置换表中的对应关系,从而得到正确的明文。    例如,明文第一段和置换表如图1-1-1所示。图1-1-1     根据明文我们可猜测图中画线的单词“soe dlda’r”应该为“she didn’t”。首先在置换表中找到明文小写字母o对应的密文大写字母E,然后改变置换表,使猜测的h对应E,依此类推则i对应F,n对应M,t对应T,变换后的置换表如图1-1-2所示。图1-1-2    单击“解密”按钮,得到明文如图1-1-3所示。图1-1-3    依此类推便可以得到明文,请根据你的置换表填写表1-1-2。表1-1-2六.源码应用(选做)1.Kaiser加密工具    设计kaiser加密工具,利用kaiser加密算法对文件进行加密。    单击工具栏“VC6”按钮,启动VC++6.0。选择“File”|“Open Workspace…”加载工程文件“C:\JLCSS\Projects\Encrypt\Kaiser\kaiser.dsw”。基于此工程进行程序设计。2.单表置换加密工具    设计单表置换加密工具,利用单表置换加密算法对文件进行加密。    单击工具栏“VC6”按钮,启动VC++6.0。选择“File”|“Open Workspace…”加载工程文件“C:\JLCSS\Projects\Encrypt\SingleTable\singletable.dsw”。基于此工程进行程序设计。