文档章节

[非原创] 常用加密算法整理 AES/SSL(一)

loongchao
 loongchao
发布于 2017/07/05 18:02
字数 1199
阅读 59
收藏 0

前言:

 

     《智取威虎山》“问:天王盖地虎,答:宝塔镇河妖”计算机没有流行的年代,人们都是这样的去加密和解密的。

     在伟大的计算机科学家研究下,发明了许多的加密算法,以下做个简答的描述:

 

一、分类

 

     加密算法分为两种:单向加密、双向加密

 

     单向加密,不可逆的加密算法,只能加密不能解密;

     双向加密,由对称性加密算法和非对称性加密算法;

          对称性加密:约定好的密钥和统一的加密算法,双发对数据进行加密、解密;

               // 加密解密用的是同样的“钥匙”

               张无忌将一个加了锁的盒子寄给了赵敏,

               赵敏收到盒子后用相同的钥匙打开,然后同样的方式寄回给张无忌;

          非对称性加密:公钥和私钥组成,公钥加密私钥解密;

               // 加密解密用的是不同的“钥匙”

               张无忌和赵敏各有自己的盒子。赵敏要跟张无忌秘密通信,她先让张无忌把盒子打开通过邮局发给她。

               赵敏拿到盒子后放入信息锁上,然后发给张无忌。张无忌就可以用他自己的钥匙打开了。回复的话就用同样的方式。

 

二、SSL(HTTPS 协议)加密原理

 

     SSL 就是典型的非对称性加密方式,结合上面的描述,简单描述一下 SSL 原理:

 

     1、当你的浏览器向服务器请求一个安全的网页(通常是 https://);

     2、服务器就把它的证书和(非对称性加密的)公钥发回来;

     3、浏览器检查证书是不是由可以信赖的机构颁发的,确认证书有效和此证书是此网站的;

     4、浏览器使用服务器给的公钥加密了一个随机对称密钥 (浏览器随机生成一个对称性密钥,采用服务器的公钥进行加密),

               包括加密的URL一起发送到服务器

     5、服务器用自己的私钥解密了浏览器发送的密钥,然后用这个对称性加密的密钥解密浏览器的请求信息;

     6、服务器用你发的对称钥匙给你请求的网页加密。你也有相同的钥匙就可以解密发回来的网页了;

 

     // 非对称算法在加密和解密时用的是不同的钥匙。

         信息接受者有两把钥匙:一把“公匙”,一把“私匙”。

         公匙是给信息发送者用来加密的,私匙是自己用来解密的这样最大的好处是:

         不必通过不安全的渠道发送私密的东西。公匙本来就是给别人用的,不用藏好。

         你的私匙在你产生私匙的电脑里保存着。

     

     // 如果还是没能完全理解,把非对称性加密中的 "张无忌、赵敏" 分别换成客户端(浏览器)与服务器(Web)

 

三、常用的算法

 

     对称性加密算法:AES、DES、3DES

     非对称性加密算法:RSA、DSA、ECC

     线性散列算法(不是加密算法):MD5、SHA1、HMAC

 

四、AES 加密算法

     

     AES 又称“矩阵加密算法”其原理采用字节矩阵上进行“或与非”的操作(置换和替代),

     达到数据被重新排列、或者替换成为另一个完全不相同的数据;

     从而达到可以采用相同的密钥进行“回转”;

     AES 加密的区块长度固定为 128、192、256 位(bit);

 

     

     (附破图一张)

     

     AES 加密过程涉及到 4 种操作:

          字节替代(SubBytes)

          行移位(ShiftRows)

          列混淆(MixColumns)

          轮密钥加(AddRoundKey)

     解密过程分别为对应的逆操作,

     由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。 

 

     字节替代(SubBytes)

          字节代替的主要功能是通过一个固定的“矩阵”(想象成 Excel 表格上的数据)

          完成一个字节到另外一个字节的映射。

 

     行移位(ShiftRows)

          行移位的功能是实现一个 4x4 矩阵内部字节之间的置换。

          其实应该就是高级编程不常用的“或与非 ^ & | ”操作;

          采用正向行移位和逆向行移位到达预期结果;

 

     列混淆(MixColumns)

          利用GF(28)域上算术特性的一个代替。

          具体没有深究,有点小复杂,总之一句话代替就是 TM 在矩阵上根据数学公式搞来搞去;

 

     源码参考:

          https://github.com/dhuertas/AES/blob/master/aes.c

 

     

 

参考自:

     http://blog.csdn.net/qq_26420489/article/details/53395472

     http://www.mamicode.com/info-detail-514466.html

本文转载自:http://blog.csdn.net/qq_26420489/article/details/53395472

loongchao
粉丝 7
博文 2
码字总数 335
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

loongchao
loongchao
我是一个很注重排版的人,oschina 的编辑器我用不好。
详解 HTTPS 移动端对称加密套件优化

近几年,Google、Baidu、Facebook 等互联网巨头大力推行 HTTPS,国内外的大型互联网公司很多也都已启用全站 HTTPS。 Google 也推出了针对移动端优化的新型加密套件 ChaCha20-Poly1305。 又拍...

又拍云
2017/09/27
0
0
Windows2012R2 远程桌面服务(RDP)3389存在SSL漏洞的解决办法

1. 前言 为了提高远程桌面的安全级别,保证数据不被黑客窃取,在Windows2003的最新补丁包SP1中添加了一个安全认证方式的远程桌面功能。通过这个功能我们可以使用SSL加密信息来传输控制远程服...

林鸿风采
2018/04/28
0
0
QT历程(一):与CryptoJs对应的AES加密

目的: 使用QT进行AES加密,能用CryptoJs进行AES解密。 说明: CryptoJs使用的AES加密文件为 aes.js 网上QT常用的AES加密方式 1. Crypto++库 2. Qca库 3. Botan库 4. 网友贡献的AES加密代码 ...

jiuyuehe
2016/05/31
84
0
Windows server 2012远程桌面服务(RDP)存在SSL / TLS漏洞的解决办法

1、 前言 为了提高远程桌面的安全级别,保证数据不被×××窃取,在Windows2003的最新补丁包SP1中添加了一个安全认证方式的远程桌面功能。通过这个功能我们可以使用SSL加密信息来传输控制远程...

林鸿风采
2018/06/28
0
0
【 Linux学习】Linux环境下利用OpenSSL对大文件进行AES加解密

版权声明:本文为【欧阳鹏】原创文章,欢迎转载,转载请注明出处! 【http://blog.csdn.net/ouyang_peng】 https://blog.csdn.net/qq446282412/article/details/83117025 一、背景 之前的几篇...

欧阳鹏
2018/10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redox OS 发布 0.5 版

Redox OS 是一个几乎