前端⼏种加密⽅式总结
AES,SHA1,DES,RSA,MD5区别
AES:更快,兼容设备,安全级别⾼;
SHA1:公钥后处理回传
DES:本地数据,安全级别低
RSA:⾮对称加密,有公钥和私钥
MD5:防篡改
MD5
⼴泛使⽤的散列算法
准确的说,MD5不能算加密算法,但是由于其简单易⽤性,所以⽤的⼈多了,被误传为加密算法的⼀种。
MD5是不可逆的运算。
现在很多可以破解的⽅法,建议搭配使⽤。
DES
⾃从有了AES,DES就每况愈下了,毕竟活了⼏⼗年的算法,算是寿终正寝了,不多赘述。
AES
AES加密算法是密码学中的⾼级加密标准。采⽤对称分组密码体制,密钥长度的最少⽀持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。
⽤法
java
//实例化的时候需要的这个参数通常⽤很多种模式
Cipher cipher = Instance(transformation);
在实例化Cipher的时候需要转化⽅式,我使⽤的⼀般是AES/CBC/PKCS5Padding,也有很多⼈⽤AES/ECB/NoPadding
他们分别代表法算法名称/加密模式/填充⽅式,也就是说,AES,你也可以直接替换成DES(如果不怕被同事打可以试试)
加密模式
电⼦密码本模式ECB
加密块链模式CBC
加密反馈模式CFB
输出反馈模式OFB
其中⽤的最多的是前两种
填充⽅式
NoPadding
ZerosPadding
PKCS5Padding
其中⽤的最多的是P5,要选不填充就没意义了
//⼗六进制转码
private static final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
/**
* byteArr转hexString
* <p>例如:</p>
* bytes2HexString(new byte[] { 0, (byte) 0xa8 }) returns 00A8
*
js代码加密软件* @param bytes 字节数组
* @return 16进制⼤写字符串
*/
private static String bytes2HexString(byte[] bytes) {
if (bytes == null) return null;
int len = bytes.length;
if (len <= 0) return null;
char[] ret = new char[len << 1];
for (int i = 0, j = 0; i < len; i++) {
ret[j++] = hexDigits[bytes[i] >>> 4 & 0x0f];
ret[j++] = hexDigits[bytes[i] & 0x0f];
}
return new String(ret);
}
SHA系列
常⽤的安全散列算法。
这个主要是给⽤到数字证书的⼈使⽤的,受信任的证书,⼀般都是由全国30多家CA办法,其中⽐较屌的也就那⼏家,BJCA,GDCA等等,SZCA虽然这⼏年发展势头不错,但和前⼏家⽐起来还有⼀定差距,这个咱们姑且不管,反正他们都能颁发受信任的证书。
如果你不幸⽤到,国密标准是在SHA256上改造的,只能帮你到这了,怎么⽤在⼯具类中已有说明。
⽬前⼯具类中有3中常⽤的:SHA1,SHA256,SHA512。
RSA系列
⾮对称加密算法
公钥私钥说的就是它,⾮常⾮常⾮常著名
如果你不幸⽤到上⾯的SHA系列了,那么,这个也是你⽆法避免的。
不过⼀般私钥需要通过CA办法,不好封装,只是介绍⼀下。
符合(⼤天朝)法律的私钥必须通过硬件介质来承载证书,就是我们说的Key,U盾等等。
相关:
公开密钥加密(英语:public-key cryptography,⼜译为公开密钥加密),也称为⾮对称加密(asymmetric cryptography),⼀种密码学算法类型,在这种密码学⽅法中,需要⼀对密钥,⼀个是私⼈密钥,另⼀个则是公开密钥。这两个密钥是数学相关,⽤某⽤户密钥加密后所得的信息,只能⽤该⽤户的解密密钥才能解密。如果知道了其中⼀个,并不能计算出另外⼀个。因此如果公开了⼀对密钥中的⼀个,并不会危害到另外⼀个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。
DES现在已经不是⼀种安全的加密⽅法,主要因为它使⽤的56位密钥过短。1999年1⽉,distributed与电⼦前哨基⾦会合作,在22⼩时15分钟内即公开破解了⼀个DES密钥。也有⼀些分析报告提出了该算法的理论上的弱点,虽然在实际中难以应⽤。为了提供实⽤所需的安全性,可以使⽤DES的派⽣算法3DES来进⾏加密,虽然3DES也存在理论上的攻击⽅法。在2001年,DES作为⼀个标准已经被⾼级加密标准(AES)所取代。另外,DES已经不再作为国家标准科技协会(前国家标准局)的⼀个标准。
⾼级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中⼜称Rijndael加密法,是美国联邦政府采⽤的⼀种区块加密标准。这个标准⽤来替代原先的DES,已经被多⽅分析且⼴
为全世界所使⽤。经过五年的甄选流程,⾼级加密标准由美国国家标准与技术研究院(NIST)于2001年11⽉26⽇发布于FIPS PUB 197,并在2002年5⽉26⽇成为有效的标准。2006年,⾼级加密标准已然成为对称密钥加密中最流⾏的算法之⼀。
MD5和SHA1是2种加密算法,⽤于计算出⼀段不可逆向计算的数值,以此来验证该⽂件是否被修改的.
它可以帮你验证从⽹上下载下来的windows7安装程序是否与发布⼈发布的东西完全⼀致,也就是帮助你验证这个程序有没有经过他⼈(⾮发布⼈)的修改。
aes/des加密速度快,适合⼤量数据,des容易破解,⼀般⽤3重des,后来⼜出现了更快更安全的aes
rsa是公钥加密,速度慢,只能处理少量数据,优点是公钥即使在不安全的⽹络上公开,也能保证安全
常见情况是双⽅⽤rsa协商出⼀个密钥后通过aes/3des给数据加密
SHA-1
在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年⼜发布了⼀个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很⼤程度上是模仿MD4的。现在已成为公认的最安全的散列算法之⼀,并被⼴泛使⽤。
原理
SHA-1是⼀种数据加密算法,该算法的思想是接收⼀段明⽂,然后以⼀种不可逆的⽅式将它转换成⼀段(通常更⼩)密⽂,也可以简单的理解为取⼀串输⼊码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
单向散列函数的安全性在于其产⽣散列值的操作过程具有较强的单向性。如果在输⼊序列中嵌⼊密码,那么任何⼈在不知道密码的情况下都不能产⽣正确的散列值,从⽽保证了其安全性。SHA将输⼊流按照每块512位(64个字节)进⾏分块,并产⽣20个字节的被称为信息认证代码或信息摘要的输出。
该算法输⼊报⽂的最⼤长度不超过264位,产⽣的输出是⼀个160位的报⽂摘要。输⼊是按512 位的分组进⾏处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。
通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明⽂通过⼀种函数运算(Hash)转换成报⽂摘要(不同的明⽂对应不同的报⽂摘要),报⽂摘要加密后与明⽂⼀起传送给接受⽅,接受⽅将接受的明⽂产⽣新的报⽂摘要与发送⽅的发来报⽂摘要解密⽐较,⽐较结果⼀致表⽰明⽂未被改动,如果不⼀致表⽰明⽂已被篡改。
转载:
blog.csdn/hengshujiyi/article/details/45972533?utm_medium=distribute.-task-blog-
2%7Edefault%_search_link&depth_1-utm_source=distribute.-task-blog-
2%7Edefault%_search_link
blog.csdn/lftaoyuan/article/details/64131900?utm_medium=distribute.-task-blog-
2~default~baidujs__search_link&spm=1001.2101.3001.4242
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论