胖蔡说技术
随便扯扯

加密方式概览

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

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

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

996311b1a0848bb

一.古典密码加密

① 替换法

替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 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 。

二.近代密码学

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

恩尼格玛机

恩尼格玛机是二战时期纳粹德国使用的加密机器,后被英国破译,参与破译的人员有被称为计算机科学之父、人工智能之父的图灵。 feabb5ff3ea7131 恩尼格玛机使用的加密方式本质上还是移位和替代,只不过因为密码表种类极多,破解难度高,同时加密解密机器化,使用便捷,因而在二战时期得以使用。

三.现代密码学

① 哈希函数

哈希函数,也见杂凑函数、摘要函数或散列函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有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(椭圆曲线加密算法)等。 1958e38b53c2828

BASE64

一. BASE64是什么

Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一,所以可以依据概括:它是一种编码方式,记住它不是加密的方式,它没有秘钥的概念,任何人拿到数据都能解析出来。它只是一种编码方式

二. BASE64应用场景

3eec4425b903df1 1.打开某个邮件的源文件,可以看到邮件的正文部分,使用了base64编码。 Content-Transfer-Encoding:base64

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

三. 手动转化BASE64

ascii 字符代码表 2bea76d163ab4e9 base64对照表 6d533ae77121240 转前: 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

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » 加密方式概览
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏