加密方式概述 .md 10.1 KB
Newer Older
caihaifei's avatar
caihaifei committed
1 2 3 4 5 6 7
---
title: 加密方式概述
author: 刘磊
date: 2021-11-12 9:00
---

# 加密方式概览
刘磊's avatar
刘磊 committed
8 9 10 11 12 13

公元683年,唐中宗即位。随后,武则天废唐中宗,立第四子李旦为皇帝,但朝政大事均由她自己专断。  

  裴炎、徐敬业和骆宾王等人对此非常不满。徐敬业聚兵十万,在江苏扬州起兵。裴炎做内应,欲以拆字手段为其传递秘密信息。后因有人告密,裴炎被捕,未发出的密信落到武则天手中。这封密信上只有“青鹅”二字,群臣对此大惑不解。  

  武则天破解了“青鹅”的秘密:“青”字拆开来就是“十二月”,而“鹅”字拆开来就是“我自与”。密信的意思是让徐敬业、骆宾王等率兵于十二月进发,裴炎在内部接应。“青鹅”破译后,裴炎被杀。接着,武则天派兵击败了徐敬业和骆宾王。
caihaifei's avatar
caihaifei committed
14 15 16


<!-- more -->
刘磊's avatar
刘磊 committed
17 18
  ![在这里插入图片描述](https://img-blog.csdnimg.cn/b8feae1f45f34291a8b49fee648f54e7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATEVJIExJVSAtLS3liY3nq68=,size_11,color_FFFFFF,t_70,g_se,x_16)

caihaifei's avatar
caihaifei committed
19 20 21



刘磊's avatar
刘磊 committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
## 一.古典密码加密
**① 替换法**

替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 w ,e 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。

替换法有单表替换和多表替换两种形式。单表替换即只有一张原文密文对照表单,发送者和接收者用这张表单来加密解密。在上述例子中,表单即为:a b c d e - s w t r p 。

多表替换即有多张原文密文对照表单,不同字母可以用不同表单的内容替换。

例如约定好表单为:表单 1:abcde-swtrp 、表单2:abcde-chfhk 、表单 3:abcde-jftou。

规定第一个字母用第三张表单,第二个字母用第一张表单,第三个字母用第二张表单,这时 bee单词就变成了

(312)fpk ,破解难度更高,其中 312 又叫做密钥,密钥可以事先约定好,也可以在传输过程中标记出来。

**② 移位法**

移位法就是将原文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后得出密文,典型的移位法应用有 “ 恺撒密码 ”。

例如约定好向后移动2位(abcde - cdefg),这样 bee 单词就变换成了dgg 。


## 二.近代密码学
古典密码虽然很简单,但是在密码史上是使用的最久的加密方式,直到“概率论”的数学方法被发现,古典密码就被破解了。古典密码的安全性受到了威胁,外加使用便利性较低,到了工业化时代,近现代密码被广泛应用。

恩尼格玛机

恩尼格玛机是二战时期纳粹德国使用的加密机器,后被英国破译,参与破译的人员有被称为计算机科学之父、人工智能之父的图灵。
![在这里插入图片描述](https://img-blog.csdnimg.cn/5e5312578bfe49ed9e428d4db28df6f2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATEVJIExJVSAtLS3liY3nq68=,size_8,color_FFFFFF,t_70,g_se,x_16)
恩尼格玛机使用的加密方式本质上还是移位和替代,只不过因为密码表种类极多,破解难度高,同时加密解密机器化,使用便捷,因而在二战时期得以使用。

## 三.现代密码学

## ① 哈希函数

哈希函数,也见杂凑函数、摘要函数或散列函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5、SHA-1、SHA256,多应用在文件校验,数字签名中。

哈希函数是现代密码体系中的一个重要组成部分,被普遍应用在社会生产生活当中。平时大家比较感兴趣的数字货币,就使用了哈希函数。

**哈希函数的特性**
哈希函数具有两大基本属性:单向性和抗碰撞性。单向性决定了哈希函数的正向计算效率高,反向计算难度非常大,几乎不可能;而抗碰撞性决定了无法找到两个不同的输入,使得其输出(即哈希值)是一致的。

**单向性**
哈希函数的单向性意味着,给定一个哈希值,我们无法(很难)逆向计算出其原像输入。即给定一个哈希值 y,我们无法计算出 x,使得 y=H (x)。简单来说,是无法逆向推理。

**抗碰撞性**
碰撞指的是在输入区间 D 中的任意两个不同输入 x、y,两者的哈希值是相同的。那么哈希函数的抗碰撞性意味着,找出任意两个不同的输入值 x、y,使得 H (x)= H (y)是困难的。(这里称为「困难」的原因,是消息空间是无穷的,而哈希值空间是有限的,因此一定会存在碰撞,只是对寻找碰撞的算力需要有难度上的约束)。

**哈希函数算法「家族」**
国际: MD4、MD5、SHA-1、SHA-256、SHA-3。(MD 系列、SHA-1 已被破解)
国内:国产自主研发的商用密码哈希算法,即 SM3。 

**哈希函数的应用:**
口令保护:在现代 web 应用中,账户系统的口令通过哈希函数处理后,再存储于服务器上,使得口令只对用户自己可知;
软件保护:对外发布软件时,同时使用哈希函数计算出软件的哈希值,与软件一起发布,防止用户下载假冒软件;
区块链:在区块链中,账户与交易都涉及哈希函数的使用。

## ② 对称密码

对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。

例如原文为1234567890,流加密即先对1进行加密,再对2进行加密,再对3进行加密……最后拼接成密文;块加密先分成不同的块,如1234成块,5678成块,90XX(XX为补位数字)成块,再分别对不同块进行加密,最后拼接成密文。前文提到的古典密码学加密方法,都属于流加密。
**示例**
我们现在有一个原文3要发送给B
设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B
B拿到密文324后, 使用324/108 = 3 得到原文
**特点**
*加密速度快, 可以加密大文件
*密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露
*加密后编码表找不到对应字符, 出现乱码
*一般结合Base64使用

## ③ 非对称密码

对称密码的密钥安全极其重要,加密者和解密者需要提前协商密钥,并各自确保密钥的安全性,一但密钥泄露,即使算法是安全的也无法保障原文信息的私密性。

在实际的使用中,远程的提前协商密钥不容易实现,即使协商好,在远程传输过程中也容易被他人获取,因此非对称密钥此时就凸显出了优势。

非对称密码有两支密钥,公钥(publickey)和私钥(privatekey),加密和解密运算使用的密钥不同。用公钥对原文进行加密后,需要由私钥进行解密;用私钥对原文进行加密后(此时一般称为签名),需要由公钥进行解密(此时一般称为验签)。公钥可以公开的,大家使用公钥对信息进行加密,再发送给私钥的持有者,私钥持有者使用私钥对信息进行解密,获得信息原文。因为私钥只有单一人持有,因此不用担心被他人解密获取信息原文。非对称加密与对称加密相比,其安全性更好;非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/0306398a1d9746a1bdddddcc8d6e8158.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATEVJIExJVSAtLS3liY3nq68=,size_17,color_FFFFFF,t_70,g_se,x_16)


## BASE64
### 一. BASE64是什么
Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一,所以可以依据概括:它是一种编码方式,记住它不是加密的方式,它没有秘钥的概念,任何人拿到数据都能解析出来。它只是一种编码方式
### 二. BASE64应用场景
![在这里插入图片描述](https://img-blog.csdnimg.cn/a0201f2d056442e18846d9fcbc1a8dbc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATEVJIExJVSAtLS3liY3nq68=,size_20,color_FFFFFF,t_70,g_se,x_16)
**1**.打开某个邮件的源文件,可以看到邮件的正文部分,使用了base64编码。
Content-Transfer-Encoding:base64

 这样的初衷,是为了满足电子邮件中不能直接使用非ASCII码字符的规定
比如图片文件,附件是二进制文件。电子邮件的协议不能支持到,使用base64进行编码,传输,在客户端再去解码得到原始文件。
**2**.如果纯文本数据包含不可见字符,就需要使用base64,比如xml文件某节点数据包含可见字符,显示的话就是乱码,不能够编辑操作。使用base64编码后显示,需要还原的地方再解码。(二进制文件图片应用类似)
**3**.简单加密

### 三. 手动转化BASE64
**ascii 字符代码表**
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf758ea7154f4e3b8fc2ffedd68a2931.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATEVJIExJVSAtLS3liY3nq68=,size_20,color_FFFFFF,t_70,g_se,x_16)
**base64对照表**
![在这里插入图片描述](https://img-blog.csdnimg.cn/583ae32200e8466a8bc31678d6cf8a60.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATEVJIExJVSAtLS3liY3nq68=,size_13,color_FFFFFF,t_70,g_se,x_16)
转前: s 1 3
先转成ascii:对应 115 49 51
2进制: 01110011 00110001 00110011
6个一组(4组) 011100110011000100110011
然后才有后面的 011100 110011 000100 110011
然后计算机一个字节占8位,不够就自动补两个高位0了
所以有了高位补0
科学计算器输入 00011100 00110011 00000100 00110011
得到 28 51 4 51
查对下照表 c z E z