古典密码学
单表替换
简单介绍
- 特点:明文和密文一一对应。
- 密钥空间小的情况下,暴力破解。
- 密文足够长的时候,采用词频分析。
- 特征:一般只能加密字母,不会加密特殊符号,且不会变换字母顺序,加密过后大概率第四或第五位为“{”。
常见单表替换密码
- 凯撒密码(Caesar):按照字母表顺序向前(后)移动固定数目;
在线加解密:http://planetcalc.com/1434/ - ROT13:特殊的凯撒密码;
- 埃特巴什码(Atbash Cipher):第一个字母对应最后一个字母,第二个对应倒数第二个;
- 简单替换密码:替换密码表没有规律,利用词频分析破解;
- 仿射密码:通过数学函数建立字母映射(一元一次函数);
- 培根密码 (Baconian Cipher ):每个明文字母被一个由5字符(a,b)组成的序列替换。
在线加解密:http://rumkin.com/tools/cipher/baconian.php
通常查表直接解:
http://blog.csdn.net/qq_39455664/article/details/78344952
多表替换
简单介绍
- 特点:明文和密文不在一一对应。
- 基本不能用词频分析。
常见多表替换密码
- 维吉尼亚密码(Vigenere) :使用一系列凯撒密码组成密码字母表的加密算法,行对应明文,列对应密钥;
- 棋盘密码(Polybius):一般是将给定的明文加密为两两组合的数字(或ADFGX),例,明文HELLO,加密后23 15 31 31 34。
其它密码
- 栅栏密码:明文分成n个一组,取每组的第i个字组成第i段密文,最后将多段组合在一起,栅栏的栏数就是分组个数;
- 猪圈密码(Pigpen):别称朱高密码、共济会密码、九宫格密码,一格子为基础的简单替代式密码。在线加解密:http://www.simonsingh.net/The_Black_Chamber/pigpen.html
- 云影密码:01248密码,用01248四个数字,其中 0 用来表示间隔,其他数字以加法可以表示出 如:28=10,124=7,18=9,再用 1->26 表示 A->Z。
- 摩斯密码:摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。只有.(点)和-(划)
在线加解密:https://www.bejson.com/enc/morse/ - JSFuck: JSFuck 可以只用 6 个字符 !+ 来编写 JavaScript 程序。
在线加解密:http://www.jsfuck.com/ - BrainFuck和ook:是一种极小化的计算机语言。
在线加解密:https://www.splitbrain.org/services/ook
现代密码学
基础
- 对称加密:加密和解密采用同一密钥。
- 非对称加密:使用一堆密钥,分为公私钥,公钥加(解)密,私钥解(加)密。
DES加密(对称加密)
简单介绍
- 密钥是56比特,明文为64比特。
- DES的基本结构是Feistel网络;DES是一种16轮的Feistel网络;子密钥每轮都会变;
- Feistel网络特质:
- 轮数任意增加;
- 加密解密结构相同;
- 解密密钥倒着输入即可;
- 任何函数都可以作为轮函数。
DES攻击
- 差分攻击:改变一部分明文并分析密文如何改变。
- 线性攻击:将明文和密文的对应比特进行异或并计算结果为0的概率。
RSA加密(非对称加密)
简单介绍
-
RSA可以被用于加密解密,密钥交换,数字签名;基于大数分解难题;
-
生成公私钥的步骤:
- 随机生成两个素数p,q;
- 计算N = p·q和欧拉函数φ(N)=(p-1)(q-1);
- 随机选择一个加密密钥e,这里1<e<φ(N), gcd(e,φ(N)) = 1;
- 求解e·d=1 mod φ(N) 且 0≤d≤N (乘法逆元);
- 发布加密密钥公钥KU = {e,N};
- 保密解密密钥私钥KR = {d,N}。
-
加密:
-
解密:
-
题型:
- 直接解密(已知p,q,求d);
- N相关攻击:
- 分解N,最大素数公约数;
- 共模攻击:RSA体系在生成密钥的过程中使用了相同的模数n;
- e相关攻击:
- 小指数e攻击:直接爆破;
- 低加密指数广播攻击;