古典密码学知识

古典密码学

古典密码主要关心信息的保密书写和传递以及与其相对应的破解方法。

加密方式有:凯撒加密、关键词加密、防射加密、维吉尼亚加密等。其中凯撒加密、关键词加密、仿射加密都为单表加密。

凯撒加密

属于代替加密,明文中的所有字母都在字母表上向前或者向后发生固定数目的偏移从而形成密文。

a = input()
k=ord('f')-ord(a[0])
for i in a:
    if(ord(i)< 97 or ord(i)> 122):
        print(i,end='')
    else:
        d=(ord(i)-97+26+k)%26
        print(chr(d+97),end='')

在线加密解密网址:https://www.qqxiuzi.cn/bianma/kaisamima.php

关键词加密

也是一种单表替代加密,比凯撒加密复杂一点,加密时需要一个关键词,可以是随便一个去重后的单词,讲这个去重后的关键词写在字母表下面,然后按字母表顺序将其余关键词中没有出现的字母在后面补齐,然后将明文中字母表上的字母对应代替为写在字母表下的字母,得到密文。

仿射加密

在防射加密中每个字母都对应一个数字,a-z分别对应0-25, 密钥为0-25中的一个数字对(a,b),其中a与26的最大公约数必须为1。设p为明文字母对应的数字,则此字母相对的密文为c ≡ a*p + b ( mod 26 )

解密时需要计算密钥数字对中a的逆元,即a对于26的模反数。模反数可以简单理解为整数环中的倒数,a乘以a的模反数对26取模为1。所以一个数乘以a再乘a的逆元就等于原来的数。

解密时已知密钥对(a,b)和密文c,则p ≡ a^-1 (c-b) mod 26

单表加密分析:

可以利用不同的字母出现频率来判断被替换成了某个字母的可能性。在这里插入图片描述
词频分析不仅针对于字母,也有很多连续两个字母(双联字母)出现频率较高的现象,可作为辅助分析。
在这里插入图片描述
除此之外,也可以通过单词的格式进一步缩小范围,因为单表加密只改变字母不改变格式。

维吉尼亚加密

维吉尼亚密码是使用一系列凯撒密码组成密码字母表的多表加密算法。为了生成密码,需要使用表格,而这一表格要包括了26行字母表,每一行都由前一行向左移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。在这里插入图片描述
例:明文:ATTACKATDAWN,选择关键词:LEMON,重复关键词,直到长度和明文相同,作为密钥:LEMONLEMONLE,然后通过等长的明文和密钥,依次查表得到密文:LXFOPVEFRNHR。

而解密过程正与加密相反,例如:根据密钥第一个字母 L 所对应的 L 行字母表,发现密文第一个字母 L 位于 A 列,则明文第一个字母为 A 。密钥第二个字母 E 对应 E 行字母表,而密文第二个字母 X 位于此行 T 列,则明文第二个字母为 T。

维吉尼亚加密可以避免直接的词频分析攻击,密文在统计上没有明显的规律,但是仍然有方法可以对其进行破解。
Frederick Kasiski 基于观察得出结论:“密钥的重复部分与明文中的重复部分的连接,在密文中也产生一个重复部分”。即,如果一个字符串在明文中重复,并且被密钥相同的部分加密,那么在密文中也会出现重复的字符串。

替换和编码

古典加密还有很多种形式的简单替换和编码,这些替换也常常出现杂项中,例如:摩尔斯电码、福尔摩斯跳舞的小人、敲击码、培根密码等。

中文电码
中文电码,又称标准中文电码、中文商用电码、中文电报码或中文电报明码,原本是于电报之中传送中文信息的方法。它是第一个把汉字化作电子讯号的编码表。

历史:1873年,法国驻华人员威基杰(S·A·Viguer)参照《康熙字典》的部首排列方法,挑选了常用汉字6800多个,编成了第一部汉字电码本,名为《电报新书》。后由我国的郑观应将其改编成为《中国电报新编》。这是中国最早的汉字电码本。中国人最早研制的电报机华侨商人王承荣从法国回国后,与福州的王斌研制出我国第一台电报机,并呈请政府自办电报。清政府拒不采纳。

原理:中文电码表采用了四位阿拉伯数字作代号,从0001到9999按四位数顺序排列,用四位数字表示最多一万个汉字、字母和符号。汉字先按部首,后按笔划排列。字母和符号放到电码表的最尾。后来由于一万个汉字不足以应付户籍管理的要求,又有第二字面汉字的出现。在香港,两个字面都采用同一编码,由输入员人手选择字面;在台湾,第二字面的汉字会在开首补上“1”字,变成5个数字的编码。

解码:http://code.mcdvisa.com/
例题:606046152623600817831216121621196386

栅栏密码
①把将要传递的信息中的字母交替排成上下两行。
②再将下面一行字母排在上面一行的后边,从而形成一段密码。
③例如:
密文:felhaagv{ewtehtehfilnakgw}
明文:flag{wethinkwehavetheflag}
解题:https://www.qqxiuzi.cn/bianma/zhalanmima.php

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值