加密算法(DES,AES,RSA,MD5,SHA1,Base64)⽐较和项⽬
应⽤,各种加密算法⽐较
加密技术通常分为两⼤类:"对称式"和"⾮对称式"。
对称性加密算法:对称式加密就是加密和解密使⽤同⼀个密钥。信息接收双⽅都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进⾏加解密了。对称加密算法⽤来对敏感数据等信息进⾏加密。
⾮对称算法:⾮对称式加密就是加密和解密所使⽤的不是同⼀个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使⽤,否则不能打开加密⽂件。发送双⽅A,B事先均⽣成⼀堆密匙,然后A将⾃⼰的公有密匙发送给B,B将⾃⼰的公有密匙发送给A,如果A要给B发送消 息,则先需要⽤B的公有密匙进⾏消息加密,然后发送给B端,此时B端再⽤⾃⼰的私有密匙进⾏消息解密,B向A发送消息时为同样的道理。
散列算法:散列算法,⼜称哈希函数,是⼀种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这⼀服务,它对不同长度的输⼊消息,产⽣固定长度的输出。这个固定长度的输出称为原输⼊消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是⽤来加密的,⽽是签名。
对称性加密算法有:AES、DES、3DES
⽤途:对称加密算法⽤来对敏感数据等信息进⾏加密
DES(Data Encryption Standard):数据加密标准,速度较快,适⽤于加密⼤量数据的场合。
3DES(Triple DES):是基于DES,对⼀块数据⽤三个不同的密钥进⾏三次加密,强度更⾼。
AES(Advanced Encryption Standard):⾼级加密标准,是下⼀代的加密算法标准,速度快,安全级别⾼;AES是⼀个使⽤128为分组块的分组加密算法,分组块和128、192或256位的密钥⼀起作为输⼊,对4×4的字节数组上进⾏操作。众所周之AES是种⼗分⾼效的算法,尤其在8位架构中,这源于它⾯向字节的设计。AES 适⽤于8位的⼩型单⽚机或者普通的32位微处理器,并且适合⽤专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)达到⼗亿量级。同样,其也适⽤于RFID系统。
⾮对称性算法有:RSA、DSA、ECC
RSA:由 RSA 公司发明,是⼀个⽀持变长密钥的公共密钥算法,需要加密的⽂件块的长度也是可变的。RSA在国外早已进⼊实⽤阶段,已研制出多种⾼速的RSA的专⽤芯⽚。
DSA(Digital Signature Algorithm):数字签名算法,是⼀种标准的 DSS(数字签名标准),严格来说不算加密算法。
url编码处理ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。ECC和RSA相⽐,具有多⽅⾯的绝对优势,主要有:抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。计算量⼩,处理速度快。ECC总的速度⽐RSA、DSA要快得多。存储空间占⽤⼩。ECC的密钥尺⼨和系统参数与RSA、DSA相⽐要⼩得多,意味着它所占的存贮空间要⼩得多。这对于加密算法在IC卡上的应⽤具有特别重要的意义。带宽要求低。当对长消息进⾏加解密时,三类密码系统有相同的带宽要求,但应⽤于短消息时ECC带宽要求却低得多。带宽要求低使ECC在⽆线⽹络领域具有⼴泛的应⽤前景。
散列算法(签名算法)有:MD5、SHA1、HMAC
⽤途:主要⽤于验证,防⽌信息被修。具体⽤途如:⽂件校验、数字签名、鉴权协议
MD5:MD5是⼀种不可逆的加密算法,⽬前是最牢靠的加密算法之⼀,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成⼀段唯⼀的固定长度的代码。
SHA1:是由NISTNSA设计为同DSA⼀起使⽤的,它对长度⼩于264的输⼊,产⽣长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1
是由美国标准技术局(NIST)颁布的国家标准,是⼀种应⽤最为⼴泛的Hash函数算法,也是⽬前最先进的加密技术,被政府部门和私营业主⽤来处理敏感的信息。⽽SHA-1基于MD5,MD5⼜基于MD4。
HMAC:是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利⽤哈希算法,以⼀个密钥和⼀个消息为输⼊,⽣成⼀个消息摘要作为输出。也就是说HMAC是需要⼀个密钥的。所以,HMAC_SHA1也是需要⼀个密钥的,⽽SHA1不需要。
其他常⽤算法:
Base64:其实不是安全领域下的加密解密算法,只能算是⼀个编码算法,通常⽤于把⼆进制数据编码为可写的字符形式的数据,对数据内容进⾏编码来适合传输(可以对img图像编码⽤于传输)。这是⼀种可逆的编码⽅式。编码后的数据是⼀个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/,共64个字符(26 + 26 + 10 + 1 + 1 = 64,其实是65个字符,“=”是填充字符。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位⾼位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要⽐原来的长1/3。原⽂的字节最后不够3个的地⽅⽤0来补⾜,转换时Base64编码⽤=号来代替。这就是为什么有些Base64编码会以⼀个或两个等号结束的原因,中间是不可能出现等号的,但等号最多只有两个。其实不⽤"="也不耽误解码,之所以⽤"=",可能是考虑到多段编码后的Base64字符串拼起来也不会引起混淆。)
Base64编码是从⼆进制到字符的过程,像⼀些中⽂字符⽤不同的编码转为⼆进制时,产⽣的⼆进制是不⼀样的,所以最终产⽣的Base64字符也不⼀样。例如"上⽹"对应utf-8格式的Base64编码是"5LiK572R", 对应GB2312格式的Base64编码是"yc/N+A=="。
标准的Base64并不适合直接放在URL⾥传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,⽽这些“%”号在存⼊数据库时还需要再进⾏转换,因为ANSI SQL中已将“%”号⽤作通配符。
为解决此问题,可采⽤⼀种⽤于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成
了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统⼀了数据库、表单等处对象标识符的格式。
另有⼀种⽤于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前⾯在IRCu中⽤到
的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有⼀些变种,它们将“+/”改为“_-”或“._”(⽤作编程语⾔中的标识符名称)或“.-”(⽤于XML中的N
mtoken)甚
⾄“_:”(⽤于XML中的Name)。
H TTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为⽬标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加⼊SSL层,HTTPS的安全基础是SSL(SSL使⽤40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。),因此加密的详细内容就需要SSL。https:URL表明它使⽤了HTTP,但HTTPS存在不同于HTTP的默认端⼝及⼀个加密/⾝份验证层(在HTTP与TCP之间),提供了⾝份验证与加密通讯⽅法,现在它被⼴泛⽤于万维⽹上安全敏感的通讯,例如交易⽀付⽅⾯。它的主要作⽤可以分为两种:⼀种是建⽴⼀个信息安全通道,来保证数据传输的安全;另⼀种就是确认⽹站的真实性。
项⽬应⽤总结:
1. 加密算法是可逆的,⽤来对敏感数据进⾏保护。散列算法(签名算法、哈希算法)是不可逆的,主要⽤于⾝份验证。
2. 对称加密算法使⽤同⼀个密匙加密和解密,速度快,适合给⼤量数据加密。对称加密客户端和服务端使⽤同⼀个密匙,存在被抓包破解的风险。
3. ⾮对称加密算法使⽤公钥加密,私钥解密,私钥签名,公钥验签。安全性⽐对称加密⾼,但速度较慢。⾮对称加密使⽤两个密匙,服务端和客户端密匙不⼀样,私钥放在服务端,⿊客⼀般是拿不到的,安全性⾼。
4. Base64不是安全领域下的加解密算法,只是⼀个编码算法,通常⽤于把⼆进制数据编码为可写的字符形式的数据,特别适合在
http,mime协议下的⽹络快速传输数据。UTF-8和GBK中⽂的Base64编码结果是不同的。采⽤Base64编码不仅⽐较简短,同时也具有不可读性,即所编码的数据不会被⼈⽤⾁眼所直接看到,但这种⽅式很初级,很简单。Base64可以对图⽚⽂件进⾏编码传输。
5. https协议⼴泛⽤于万维⽹上安全敏感的通讯,例如交易⽀付⽅⾯。它的主要作⽤可以分为两种:⼀种是建⽴⼀个信息安全通道,来保证数据传输的安全;另⼀种就是确认⽹站的真实性。
6. ⼤量数据加密建议采⽤对称加密算法,提⾼加解密速度;⼩量的机密数据,可以采⽤⾮对称加密算法。在实际的操作过程中,我们通常采⽤的⽅式是:采⽤⾮对称加密算法管理对称算法的密钥,然后⽤对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,⼜实现了安全⽅便管理密钥的优点。
7. MD5标准密钥长度128位(128位是指⼆进制位。⼆进制太长,所以⼀般都改写成16进制,每⼀位16进制数可以代替4位⼆进制数,所以128位⼆进制数写成16进制就变成了128/4=32位。16位加密就是从32位MD5散列中把中间16位提取出来);sha1标准密钥长度160位(⽐MD5摘要长32位),Base64转换后的字符串理论上将要⽐原来的长1/3。
==========================================================================
==========================================================================
==========================================================================
各种加密算法⽐较
算法选择:对称加密AES,⾮对称加密: ECC,消息摘要: MD5,数字签名:DSA
对称加密算法(加解密密钥相同)
名称密钥长度运算速度安全性资源消耗DES56位较快低中
3DES112位或168位慢中⾼
AES128、192、256位快⾼低
⾮对称算法(加密密钥和解密密钥不同)
名称成熟度安全性(取决于密钥长度)运算速度资源消耗
RSA⾼⾼慢⾼
DSA⾼⾼慢只能⽤于数字签名
ECC低⾼快低(计算量⼩,存储空间占⽤⼩,带宽要求低)
散列算法⽐较
名称安全性速度
SHA-1⾼慢
MD5中快
对称与⾮对称算法⽐较
名称密钥管理安全
性
速度
对称算法⽐较难,不适合互联⽹,⼀般⽤于
内部系统
中
快好⼏个数量级(软件加解密速度⾄少快100倍,每秒可以加解密数M⽐特数据),适合
⼤数据量的加解密处理
⾮对称
算法
密钥容易管理⾼慢,适合⼩数据量加解密或数据签名
算法选择(从性能和安全性综合)
对称加密: AES(128位),
⾮对称加密: ECC(160位)或RSA(1024),
消息摘要: MD5
数字签名:DSA
轻量级:TEA、RC系列(RC4),Blowfish (不常换密钥)
速度排名(个⼈估测,未验证):IDEA <DES <GASTI28<GOST<AES<RC4<TEA<Blowfish
简单的加密设计: ⽤密钥对原⽂做 异或,置换,代换,移位
名称数据⼤⼩(MB)时间(s)平均速度MB/S评价DES25610.522.5低
3DES2561212低AES(256-bit)256551.2中Blowfish256 3.764⾼
表5-3 单钥密码算法性能⽐较表
名称实现⽅式运算速
度
安 全 性改进措施应⽤场合
DES 40-56bit
密钥
⼀般完全依赖密钥,易受穷举搜索法攻击双重、三重DES,AES 适⽤于硬件实现
IDEA 128bit密
钥
8轮迭代
较慢军事级,可抗差值分析和相关分析
加长字长为32bit、密钥为
256bit,采⽤232 模加、
232+1模乘
适⽤于ASIC设计
GOST 256bit密
钥
32轮迭代
较快军事级加⼤迭代轮数
S盒可随机秘
密选择,便于软件
实现
Blowfish256-
448bit
密钥、16
轮迭代最快 军事级、可通过改变密钥长度调整安全性适合固定密钥场
合,不适合常换密
钥和智能卡
RC4密钥长度可
变
快
DESl0
倍
对差分攻击和线性攻击具有免疫能⼒,⾼度
⾮线性
密钥长度放宽到64bit
算法简单,易于编
程实现
RC5密钥长度和
迭代轮数均
可变
速度可
根据
三个参
数的
值进⾏
选择
六轮以上时即可抗线性攻击、通过调整字
长、密钥长度和迭代轮数可以在安全性和速
度上取得折中
引⼊数据相倚转
适⽤于不同字长的
微处理器
CASTl28密钥长度可
变、16轮
迭代
较快可抵抗线性和差分攻击
增加密钥长度、形成
CAST256
适⽤于PC机和
UNIX⼯作站
常见加密算法
1、DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适⽤于加密⼤量数据的场合;
2、3DES(Triple DES):是基于DES的对称算法,对⼀块数据⽤三个不同的密钥进⾏三次加密,强度更⾼;
3、RC2和RC4:对称算法,⽤变长密钥对⼤量数据进⾏加密,⽐ DES 快;
4、IDEA(International Data Encryption Algorithm)国际数据加密算法,使⽤ 128 位密钥提供⾮常强
的安全性;
5、RSA:由 RSA 公司发明,是⼀个⽀持变长密钥的公共密钥算法,需要加密的⽂件块的长度也是可变的,⾮对称算法;
6、DSA(Digital Signature Algorithm):数字签名算法,是⼀种标准的 DSS(数字签名标准),严格来说不算加密算法;
7、AES(Advanced Encryption Standard):⾼级加密标准,对称算法,是下⼀代的加密算法标准,速度快,安全级别⾼,在21世纪AES 标准的⼀个实现是 Rijndael 算法;
8、BLOWFISH,它使⽤变长的密钥,长度可达448位,运⾏速度很快;
9、MD5:严格来说不算加密算法,只能说是摘要算法;
10、PKCS:The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的⼀组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等⽅⾯的⼀系列相关协议。
11、SSF33,SSF28,SCB2(SM1):国家密码局的隐蔽不公开的商⽤算法,在国内民⽤和商⽤的,除这些都不容许使⽤外,其他的都可以使⽤;
12、ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
13、(Tiny Encryption Algorithm)简单⾼效的加密算法,加密解密速度快,实现简单。但安全性不如DES,QQ⼀直⽤tea加密
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论