常用加密算法概述、比较及使用场景说明

版权声明:本文为博主原创文章,转载需注明出处。 https://blog.csdn.net/david_pfw/article/details/82918698

加密算法

概要介绍

算法简要描述

优缺点

破解方式

使用场景

 安全性

DES

1,对称加密;

2,数据分组(64位)用秘钥(64位,其中56位有效,8位校验)行加密;

3,算法公开,对秘钥保护;

1,根据用户输入取得一个64位秘钥,然后进行等分、移位、选取和迭代形成一套16个加密秘钥,分别提供每轮运算使用;

2,对64位明文分组M进行操作,M经过初期置换IP,置换为m0,将m0分为左右各32位长,并进行16轮相同的运算(迭代),每轮运算都和相应的秘钥结合;

3,在每一轮中,密码位移位,从秘钥的56位中选出48位,通过一个扩展置换将数据右半边扩展成48位,并通过异或操作替代成新的48位,压缩至32位,并通过一个异或与左半边结合,其结果为右半边,原来的右半边称为左半边,该操作执行16次;

4,经过16轮迭代,左右部分合在一起进行一个末置换(数据整理),完成加密过程;

5,解密算法适用同样此算法。

优点:

算法公开、计算量小、加密速度快、效率高;

缺点:

1,如果双方都持有秘钥,安全无法保证;

2,秘钥安全保护成本高,管理困难;

暴力破解、穷举

普通数据加密

3DES(DESede)

1,三重des加密算法;

2,每个数据块用三次des加密;

3,是des想aes过渡的加密算法;

3,对称加密;

加密过程:C=Ek3(Dk2(Ek1(P)))

解密过程:P=Dk1(Ek2(Dk3(C)))

同上

难度大

同上

较高

AES

1,对称加密;

2,基于排列置换;

3,软硬件实现;

4,分组密码体制;

5,取代原来的DES;

1,对数据进行128位(16字节)进行分组加密,每次对一组数据加密需要多轮;

2,输入秘钥长度为:128、192、256,如果不够则补齐;

3,加密基本流程:

1),生成各轮的扩展秘钥,存在key数组中,包含用户输入秘钥和扩展秘钥;

2),待加密数组与第一组秘钥异或;

3),最后一轮前的变换操作:

SubBytes(state)                   对数据进行S字节变换

ShiftRows(state)                 进行行变换

MixColumns(state)                  进行列混合变换

AddRoundKey(state, Keys[ 当前轮密钥组] )               与当前轮的密钥进行异或

4),最后一轮变换操作

invShiftRows(state) 进行反行变换

invSubBytes(state)  对数据进行反S字节变换

AddRoundKey(state, Keys[ 第一组] ) 与第一组密钥进行异或

4,解密流程:

与加密相反

5,分组模式

1),ECB

优点:简单、并行计算、误差不会传递;

缺点:不能隐藏明文模式、可能对明文主动攻击;

2),CBC(密码分组链接)

优点:不容易主动攻击,安全性好于ECB,适合传输较长报文,是SSL,IPSec的标准;

缺点:不利于并行计算、误差传递、需要初始化向量;

3),CFB(密码反馈模式)

优点:隐藏明文模式、分组密码转化为流模式、可以及时加密传送小分组的数据;

缺点:不利于并行计算、误差传递、唯一的IV;

4),OFB

优点:隐藏明文、分组密码转化流模式、可以及时加密传送小分组的数据

缺点:不利于并行计算、最明文产生主动攻击、误差传递;

5),CTR(技术模式)

优点:并行计算、简化仅要求实现加密算法而无需解密算法、无填充可高效作为流程加密

4,常用填充方式

NoPadding-不填充

ZerosPadding-0填充

PKCS5Padding-每个填充都记录了填充的总数

优点:

1,分组模式选择多,加密安全;

缺点:

1,同DES类似,密码管理都是问题;

暴漏过线性密码攻击、查封密码攻击,难度大

同上

较高

BASE64

1,64个可打印字符来表示二进制数据的表示方法;

2,算法简单;

1,64个字符标示:A-Z、a-z、0-9、+/;

2,BASE64的单元为6bit,也即是3个字节=4个此单元;

3,源数据依次去除3个字节并进行计算并参照64个字符输出直至完成。

优点:简单;

缺点:不适合做复杂加密

简单

1,二进制转换为字符;

2,http协议中方便把二进制数据转换完放到URL或隐藏域中

MD5

1,信息摘要算法;

2,压缩性:任意长度的数据,算出固定长度;

2,容易计算:从原数据计算md5很容易;

3,抗修改性:对原数据修改1个字节,md5值变化都很大;

4,强碰撞性,找一个具有相同md5值得数据(伪造)比较困难;

5,不可逆;

1,按照512位分组处理,每一个分组分为16个32位子分组,处理后输出4个32位分组组成,将这4个分组级联后生成128位散列值,详细算法省略;

2,算法改进

MD5加密后值有16位和32位之分,分别为:

MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))  32位

MD5=LCase(WordToHex(b) & WordToHex(c)) 16位

优点:简单、伪造难

缺点:潜在的冲突

有破解的案例

1,登录密码保护;

2,文件防止篡改;

3,HTTP传输内容加密防篡改;

4,数字签名;

较高

RSA

1,非对称加密;

2,密钥长度决定了其复杂度;

3,简单原理:公钥加密私钥解密,私钥做签名公钥公钥解密验证;

1,随意选择两个大的质数p和q,p不等于q,计算N=pq;

2, 根据欧拉函数,求得r = (p-1)(q-1) ;

3,选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。(模反元素存在,当且仅当e与r互质)

4,将 p 和 q 的记录销毁。

(N,e)是公钥,(N,d)是私钥

优点:原理简单;

缺点:产生密钥麻烦,受到素数产生技术的限制,因此难做到一次一密;

分组长度太大,不利于数据格式标准化;

难度大

1,数字签名;

2,公钥加密;

3,防止数据篡改;

4,通讯领域较多;

SHA1

1,消息摘要算法;

2,签名算法、数据完整性;

3,算法不可逆;

4,消息算法:512 补位;

5,sha256,sha384,sha512

把原始信息变换成位(二进制)字符串,5个步骤计算:

1),补位:消息满足长度在对512取模后余数是448,否则补位;

2),补长度:原始数据长度补到补位操作的后面,若果大于512,补成512倍数;

3),使用常量;

4),相关的函数;

5),计算消息摘要;

对于SHA256,SHA384,SHA512。用相似的办法来计算消息摘要。对消息进行补位的算法完全是一样的。

优点:保密性强

缺点:效率相比低

难度大

1,数字签名;

2,数据完整性;

猜你喜欢

转载自blog.csdn.net/david_pfw/article/details/82918698