密码学总结

最近简单看了点密码学,特来总结一下:
密码学分为古代,近代,现代密码部分,感觉布局特别像历史。嗯,闲话少说,步入正题。

古代密码学

古代密码通常会应用两个方法:

替换法

替换法又可以分成单表替换多表替换
单表替换,就是通过一张表,上面明文与密文一一对应。当我们得到密文时通过这张表就可以写出明文。简单举个例子:密文:csdn,而表上c对应l,s对应y,d对应a,n对应v,可以得出明文为:lyav。
而多表替换,就是有几张表,都有各自的对应关系,引例上面csdn,①表是lyav,而②表却是asdf。这就需要一个密钥,这个密钥决定了每个字母的对应关系。譬如密钥为1212,则明文就是:lsaf。
可见,多表替换的安全性比单表替换就上升了一个层次。

移位法

移位法一个著名的例子就是恺撒密码。写出一个英文单词,将明文里的每个字母向前或者向后移动n位,得到密文。
加密实例:

明文:The quick brown fox jumps over the lazy dog

偏移量:1

密文:Uif rvjdl cspxo gpy kvnqt pwfs uif mbaz eph

近代密码

二战时期著名的恩尼格玛密码机,简单来说就是古代的移位法与替换法相结合。
但是后来被图灵(人工智能之父)破解。
不再多说。

现代密码

散列函数/哈希函数

其加密方式主要有:MD5,SHA-1,SHA-256,SHA-512。

对称加密/单密钥加密

加解密用同一把密钥,相比而言不太安全。

流加密/序列加密

一位一位进行加密,按顺序依次进行,过程缓慢。

块加密/分组加密

将数据分为若干块,同时进行加密,速度快。

加密算法/加密标准

DES 数据加密标准,密钥必须是8字节。
AES 高级加密标准,密钥必须是16字节。
其特点:
1、速度快,可加密大文件;
2、密文可逆;
3、加密后,如果在ASCII编码表中找不到对应字符,则会出现乱码;
4、由于3,通常会结合base64。

非对称加密

有公钥,私钥两把钥匙,只能是:
用公钥加密,通过私钥解密;
用私钥加密,通过公钥解密。

//以上便是古近今的加密方式。

小知识点

古典密码解密

频率分析法:
目的:已知密文,密钥未知,得出明文。
原理:将字母出现的频率由高到低排序,根据频率,一一列出可能的明文。

即:将明文字母的出现频率与密文字母的频率相比较的过程。通过分析每个符号出现的频率而轻易地破译代换式密码。在每种语言中,冗长的文章中的字母表现出一种可对之进行分辨的频率。

例如,e是英语中最常用的字母,其出现频率为八分之一。最好假定长长的密文中最常用的符号代表e。

如果密码分析者根据频率数能破译出9个最常用的字母e,t,a,o,n,i,r,s和h,一般来说他就可破译70%的密码。最现代的译密技术也是以古老的频率分析法为根据的。

编码对应

UTF-8:中文对应编码为三个字节;
GBK:中文对应编码为两个字节;
而以上两种编码对于英文,均为一个字节。

Base64

不是加密算法,是一种编码格式,为了提升可读性。
组成:A-Z,a-z,0-9,+,/
原理:三个字节为一组,一个字节为8位,一共24位。
把三个字节转成四组,每组六位,在高位补零,补足8位,使其控 制在0-63之间。
必须是三个字节的整数倍,不是的话,用“=”补足。
**除了base64以外,还有:
base58:一般用在比特币,与base64相比,没有0,o,I,i,+,/;
base32:原理与base64大同小异;
组成:大写字母(A-Z)和数字234567。
base16:原理与base64大同小异;
组成:数字0-9以及大写字母ABCDEF。

加密模式
ECB 电子密码本

将需要加密的消息按块密码的大小分成数个块,对每个块独立加密,用的还是同一个密钥

优点:可以并行处理数据;
同时加密;
缺点:不安全(同一个密钥)。

CBC 密码块链接

加密时,取决于前面的iv向量,先与其进行异或处理,再通过密钥进行加密。

优点:安全性大大提高。
缺点:慢,只能按顺序进行。

填充模式
NoPadding

不填充
DES加密算法下,原文长度必须是8byte的整数倍
AES加密算法下,原文长度必须是16byte的整数倍

PKCS5Padding

数据块的大小为8位,不够就补足。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页