加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 - sochishun - 博客园
https://www.cnblogs.com/sochishun/p/7028056.html
加密技术通常分为两大类:"对称式"和"非对称式"。
对称性加密算法:
对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。
非对称算法:
非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方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(数字签名标准),严格来说不算加密算法。
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中的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
==========================================================================
==========================================================================
==========================================================================
各种加密算法比较 - 落叶的瞬间; - 博客园
https://www.cnblogs.com/sunxuchu/p/5483956.html
各种加密算法比较
算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA
对称加密算法(加解密密钥相同)
名称
|
密钥长度
|
运算速度
|
安全性
|
资源消耗
|
DES
|
56位
|
较快
|
低
|
中
|
3DES
|
112位或168位
|
慢
|
中
|
高
|
AES
|
128、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
|
评价
|
DES
|
256
|
10.5
|
22.5
|
低
|
3DES
|
256
|
12
|
12
|
低
|
AES(256-bit)
|
256
|
5
|
51.2
|
中
|
Blowfish
|
256
|
3.7
|
64
|
高
|
表5-3 单钥密码算法性能比较表
|
名称
|
实现方式
|
运算速度
|
安 全 性
|
改进措施
|
应用场合
|
DES
|
40-56bit
密钥
|
一般
|
完全依赖密钥,易受穷举搜索法攻击
|
双重、三重DES,AES
|
适用于硬件实现
|
IDEA
|
128bit密钥
8轮迭代
|
较慢
|
军事级,可抗差值分析和相关分析
|
加长字长为32bit、密钥为256bit,采用232 模加、232+1模乘
|
适用于ASIC设计
|
GOST
|
256bit密钥
32轮迭代
|
较快
|
军事级
|
加大迭代轮数
|
S盒可随机秘
密选择,便于软件实现
|
Blowfish
|
256-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、
TEA
(Tiny Encryption Algorithm)
简单高效的加密算法,加密解密速度快,实现简单。但安全性不如DES,QQ一直用tea加密
加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 - sochishun - 博客园https://www.cnblogs.com/sochishun/p/7028056.html 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式加密...
加密
技术通常分为两大类:"对称式"和"非对称式"。
对称性
加密算法
:对称式
加密
就是
加密
和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。
对称加密
算法用来对敏感数据等信息进行
加密
。
非对称算法:非对称式
加密
就是
加密
和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开
加密
文件。发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需
禁止使用私有或者弱
加密算法
(比如禁止使用
DES
,
SHA1
等,推荐使用
AES
:
128
位,
RSA
: 2048位, DSA: 2048
采用基于哈希算法和加入盐值(salt)方式
安全
存储口令信息
密码输入框,可设计为显示密码和隐藏密码切换功能
密码重设和
更
改操作,需要进行二次合法身份验证
密码重设时,应对注册手机号和邮箱进行有效验证,链接只能发送到预先注册的邮件地址或预先绑定的手机号
临时密码和链接应设计一个短暂的有效期(比如5分钟),防止暴力破解
当密码重新设置时,应短信通知用户是否是本人在操作..
GOST算法
对称密钥块密码是密码系统中最常见的
加密
方法。 这些密码用作随机数生成器,哈希函数和消息认证码(MAC)的主要块。 GOST是“ Gosudarstvennyi Standard”或“ Government Standard” (俄罗斯制造的一种
加密算法
)的缩写。 该算法是美国创建的
DES
算法的竞争对手。 从结构上讲,此算法与
DES
算法非常相似。 该算法是一种简单的
加密算法
,其处理过程多达32个回合,并使用带有256位密钥的64位分组密码。 GOST方法还使用了S-Box的8个永久性和XOR操作以及Rotate Left Shift。
GOST结构
密钥存储单元(KSU)通过32位寄存器(K0,K1,…,K7)存储256位字符串。
32位寄存器中的两个(R1,R2)
32位模232加法器(CM1)
按位加法器XOR(CM2)
替换块(S),是64位SBox中的八个。
由于计算机软件的非法复制,通信的泄密、数据
安全
受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息
安全
技术中,
加密
技术占有不可替代的位置,因此对信息
加密
技术和
加密
手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的
加密算法
给大家
比较
一下。
DES
加密算法
DES
加密算法
是一种分组密码,以64位为分组对数据
加密
,它的密钥长度是56位,
加密
解密用同一算法。
DES
加密算法
是对密钥进行保密,而公开算法,包括
加密
和解密算法。这样,只有掌握了和发送方相.
通信,有时候为了保证截获方即使得到了数据包,也不知道内容,所以
加密
传输即可;但有时候不需要知道数据包的内容,只要知道知道数据包能干嘛即可,比如发指令,此种情况单单对数据包进行
加密
就不够了。
基础知识:
1、单片机适用的数据
加密算法
有TEA,经过TEA
加密
的数据字节数和
加密
前的一样,只是数据不一样了
2、CRC:一个数据包,根据CRC算法的不同,可以得到不同长度的CRC值;C...