Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-study-front-share
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
yifu-study
front
yifu-study-front-share
Commits
f97ab7ec
Commit
f97ab7ec
authored
Nov 12, 2021
by
刘磊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
刘磊前端分享提交
parent
63ce8b68
Pipeline
#13699
failed with stage
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
98 deletions
+0
-98
加密方式概述.html
wiki/加密方式概述.html
+0
-98
No files found.
wiki/加密方式概述.html
deleted
100644 → 0
View file @
63ce8b68
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<title>
2021-11-10
</title>
<link
rel=
"stylesheet"
href=
"https://stackedit.io/style.css"
/>
</head>
<body
class=
"stackedit"
>
<div
class=
"stackedit__html"
><h1><a
id=
"_0"
></a>
加密方式概览
</h1>
<p>
公元683年,唐中宗即位。随后,武则天废唐中宗,立第四子李旦为皇帝,但朝政大事均由她自己专断。
</p>
<p>
裴炎、徐敬业和骆宾王等人对此非常不满。徐敬业聚兵十万,在江苏扬州起兵。裴炎做内应,欲以拆字手段为其传递秘密信息。后因有人告密,裴炎被捕,未发出的密信落到武则天手中。这封密信上只有“青鹅”二字,群臣对此大惑不解。
</p>
<p>
武则天破解了“青鹅”的秘密:“青”字拆开来就是“十二月”,而“鹅”字拆开来就是“我自与”。密信的意思是让徐敬业、骆宾王等率兵于十二月进发,裴炎在内部接应。“青鹅”破译后,裴炎被杀。接着,武则天派兵击败了徐敬业和骆宾王。
<br>
<img
src=
"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"
alt=
"在这里插入图片描述"
></p>
<h2><a
id=
"_9"
></a>
一.古典密码加密
</h2>
<p><strong>
① 替换法
</strong></p>
<p>
替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 w ,e 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。
</p>
<p>
替换法有单表替换和多表替换两种形式。单表替换即只有一张原文密文对照表单,发送者和接收者用这张表单来加密解密。在上述例子中,表单即为:a b c d e - s w t r p 。
</p>
<p>
多表替换即有多张原文密文对照表单,不同字母可以用不同表单的内容替换。
</p>
<p>
例如约定好表单为:表单 1:abcde-swtrp 、表单2:abcde-chfhk 、表单 3:abcde-jftou。
</p>
<p>
规定第一个字母用第三张表单,第二个字母用第一张表单,第三个字母用第二张表单,这时 bee单词就变成了
</p>
<p>
(312)fpk ,破解难度更高,其中 312 又叫做密钥,密钥可以事先约定好,也可以在传输过程中标记出来。
</p>
<p><strong>
② 移位法
</strong></p>
<p>
移位法就是将原文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后得出密文,典型的移位法应用有 “ 恺撒密码 ”。
</p>
<p>
例如约定好向后移动2位(abcde - cdefg),这样 bee 单词就变换成了dgg 。
</p>
<h2><a
id=
"_31"
></a>
二.近代密码学
</h2>
<p>
古典密码虽然很简单,但是在密码史上是使用的最久的加密方式,直到“概率论”的数学方法被发现,古典密码就被破解了。古典密码的安全性受到了威胁,外加使用便利性较低,到了工业化时代,近现代密码被广泛应用。
</p>
<p>
恩尼格玛机
</p>
<p>
恩尼格玛机是二战时期纳粹德国使用的加密机器,后被英国破译,参与破译的人员有被称为计算机科学之父、人工智能之父的图灵。
<br>
<img
src=
"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"
alt=
"在这里插入图片描述"
><br>
恩尼格玛机使用的加密方式本质上还是移位和替代,只不过因为密码表种类极多,破解难度高,同时加密解密机器化,使用便捷,因而在二战时期得以使用。
</p>
<h2><a
id=
"_40"
></a>
三.现代密码学
</h2>
<h2><a
id=
"__42"
></a>
① 哈希函数
</h2>
<p>
哈希函数,也见杂凑函数、摘要函数或散列函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5、SHA-1、SHA256,多应用在文件校验,数字签名中。
</p>
<p>
哈希函数是现代密码体系中的一个重要组成部分,被普遍应用在社会生产生活当中。平时大家比较感兴趣的数字货币,就使用了哈希函数。
</p>
<p><strong>
哈希函数的特性
</strong><br>
哈希函数具有两大基本属性:单向性和抗碰撞性。单向性决定了哈希函数的正向计算效率高,反向计算难度非常大,几乎不可能;而抗碰撞性决定了无法找到两个不同的输入,使得其输出(即哈希值)是一致的。
</p>
<p><strong>
单向性
</strong><br>
哈希函数的单向性意味着,给定一个哈希值,我们无法(很难)逆向计算出其原像输入。即给定一个哈希值 y,我们无法计算出 x,使得 y=H (x)。简单来说,是无法逆向推理。
</p>
<p><strong>
抗碰撞性
</strong><br>
碰撞指的是在输入区间 D 中的任意两个不同输入 x、y,两者的哈希值是相同的。那么哈希函数的抗碰撞性意味着,找出任意两个不同的输入值 x、y,使得 H (x)= H (y)是困难的。(这里称为「困难」的原因,是消息空间是无穷的,而哈希值空间是有限的,因此一定会存在碰撞,只是对寻找碰撞的算力需要有难度上的约束)。
</p>
<p><strong>
哈希函数算法「家族」
</strong><br>
国际: MD4、MD5、SHA-1、SHA-256、SHA-3。(MD 系列、SHA-1 已被破解)
<br>
国内:国产自主研发的商用密码哈希算法,即 SM3。
</p>
<p><strong>
哈希函数的应用:
</strong><br>
口令保护:在现代 web 应用中,账户系统的口令通过哈希函数处理后,再存储于服务器上,使得口令只对用户自己可知;
<br>
软件保护:对外发布软件时,同时使用哈希函数计算出软件的哈希值,与软件一起发布,防止用户下载假冒软件;
<br>
区块链:在区块链中,账户与交易都涉及哈希函数的使用。
</p>
<h2><a
id=
"__66"
></a>
② 对称密码
</h2>
<p>
对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。
</p>
<p>
例如原文为1234567890,流加密即先对1进行加密,再对2进行加密,再对3进行加密……最后拼接成密文;块加密先分成不同的块,如1234成块,5678成块,90XX(XX为补位数字)成块,再分别对不同块进行加密,最后拼接成密文。前文提到的古典密码学加密方法,都属于流加密。
<br>
<strong>
示例
</strong><br>
我们现在有一个原文3要发送给B
<br>
设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B
<br>
B拿到密文324后, 使用324/108 = 3 得到原文
<br>
<strong>
特点
</strong><br>
*加密速度快, 可以加密大文件
<br>
*密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露
<br>
*加密后编码表找不到对应字符, 出现乱码
<br>
*一般结合Base64使用
</p>
<h2><a
id=
"__81"
></a>
③ 非对称密码
</h2>
<p>
对称密码的密钥安全极其重要,加密者和解密者需要提前协商密钥,并各自确保密钥的安全性,一但密钥泄露,即使算法是安全的也无法保障原文信息的私密性。
</p>
<p>
在实际的使用中,远程的提前协商密钥不容易实现,即使协商好,在远程传输过程中也容易被他人获取,因此非对称密钥此时就凸显出了优势。
</p>
<p>
非对称密码有两支密钥,公钥(publickey)和私钥(privatekey),加密和解密运算使用的密钥不同。用公钥对原文进行加密后,需要由私钥进行解密;用私钥对原文进行加密后(此时一般称为签名),需要由公钥进行解密(此时一般称为验签)。公钥可以公开的,大家使用公钥对信息进行加密,再发送给私钥的持有者,私钥持有者使用私钥对信息进行解密,获得信息原文。因为私钥只有单一人持有,因此不用担心被他人解密获取信息原文。非对称加密与对称加密相比,其安全性更好;非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
<br>
在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
<br>
<img
src=
"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"
alt=
"在这里插入图片描述"
></p>
<h2><a
id=
"BASE64_92"
></a>
BASE64
</h2>
<h3><a
id=
"_BASE64_93"
></a>
一. BASE64是什么
</h3>
<p>
Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一,所以可以依据概括:它是一种编码方式,记住它不是加密的方式,它没有秘钥的概念,任何人拿到数据都能解析出来。它只是一种编码方式
</p>
<h3><a
id=
"_BASE64_95"
></a>
二. BASE64应用场景
</h3>
<p><img
src=
"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"
alt=
"在这里插入图片描述"
><br>
<strong>
1
</strong>
.打开某个邮件的源文件,可以看到邮件的正文部分,使用了base64编码。
<br>
Content-Transfer-Encoding:base64
</p>
<p>
这样的初衷,是为了满足电子邮件中不能直接使用非ASCII码字符的规定
<br>
比如图片文件,附件是二进制文件。电子邮件的协议不能支持到,使用base64进行编码,传输,在客户端再去解码得到原始文件。
<br>
<strong>
2
</strong>
.如果纯文本数据包含不可见字符,就需要使用base64,比如xml文件某节点数据包含可见字符,显示的话就是乱码,不能够编辑操作。使用base64编码后显示,需要还原的地方再解码。(二进制文件图片应用类似)
<br>
<strong>
3
</strong>
.简单加密
</p>
<h3><a
id=
"_BASE64_105"
></a>
三. 手动转化BASE64
</h3>
<p><strong>
ascii 字符代码表
</strong><br>
<img
src=
"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"
alt=
"在这里插入图片描述"
><br>
<strong>
base64对照表
</strong><br>
<img
src=
"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"
alt=
"在这里插入图片描述"
><br>
转前: s 1 3
<br>
先转成ascii:对应 115 49 51
<br>
2进制: 01110011 00110001 00110011
<br>
6个一组(4组) 011100110011000100110011
<br>
然后才有后面的 011100 110011 000100 110011
<br>
然后计算机一个字节占8位,不够就自动补两个高位0了
<br>
所以有了高位补0
<br>
科学计算器输入 00011100 00110011 00000100 00110011
<br>
得到 28 51 4 51
<br>
查对下照表 c z E z
</p>
</div>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment