加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用

加密技术一般分为两大类:"对称式"和"非对称式"。html

对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,以后即是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。git

非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,一般有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,不然不能打开加密文件。发送双方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为分组块的分组加密算法,分组块和12八、192或256位的密钥一块儿做为输入,对4×4的字节数组上进行操做。众所周之AES是种十分高效的算法,尤为在8位架构中,这源于它面向字节的设计。AES 适用于8位的小型单片机或者普通的32位微处理器,而且适合用专门的硬件实现,硬件实现可以使其吞吐量(每秒能够到达的加密/解密bit数)达到十亿量级。一样,其也适用于RFID系统。安全

 

非对称性算法有:RSA、DSA、ECC网络

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,须要加密的文件块的长度也是可变的。RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。架构

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来讲不算加密算法。

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。ECC和RSA相比,具备多方面的绝对优点,主要有:抗攻击性强。相同的密钥长度,其抗攻击性要强不少倍。计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具备特别重要的意义。带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具备普遍的应用前景。

 

散列算法(签名算法)有:MD五、SHA一、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-九、+、/,共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中的Nmtoken)甚至“_:”(用于XML中的Name)。

​HTTPS(全称: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。

 

参考文章:
http://www.cnblogs.com/mddblog/p/5380556.html
http://blog.csdn.net/xuefeng0707/article/details/19845111
http://blog.csdn.net/benbenxiongyuan/article/details/7756912
https://zh.wikipedia.org/wiki/Base64
http://www.cnblogs.com/hongru/archive/2012/01/14/2321397.html
http://www.cnblogs.com/chengxiaohui/articles/3951129.html
http://www.cnblogs.com/fireway/p/5860622.html
http://www.cnblogs.com/JCSU/articles/2803598.html
https://baike.so.com/doc/5404553-5642272.html
http://www.cnblogs.com/yangywyangyw/archive/2012/07/31/2620861.html

版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明做者及出处。
本文标题:加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
本文连接:http://www.cnblogs.com/sochishun/p/7028056.html
本文做者:SoChishun (邮箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)发表日期:2017年6月16日

相关文章
相关标签/搜索