常用安全算法

    安全传输除了可以使用https,还可通过安全算法实现。常用的安全算法主要包括数字摘要、对称加密算法、非对称加密算法、信息编码等。     

    本文介绍常用的安全算法主要包括摘要算法、对称加密算法、非对称加密算法、信息编码、数字签名、数字证书等,介绍各自算法的使用场景和使用方法。

数字摘要

实现

将任意长度的明文通过单向hash函数摘要成固定长度的串。 Hash(明文)-->固定长度的摘要

特点

无论明文多长,计算出来的摘要长度总是固定的。hash(‘a’)和hash(‘aaaaaaaaaaa’)形成的摘要长度是一样的

一般明文不同,计算出来的摘要也不同。也就是相同的明文,计算出来的摘要是一样的,不同的明文形成的摘要一般是不一样(好的hash函数不会发生碰撞)

只能进行正向的消息摘要。也就是说从消息摘要中不能恢复成原来的明文。

数字摘要算法

md5

sha

md5

将待加密串进行md5计算形成128比特位(32位16进制)的摘要。

字符串:jiajun

md5摘要:a51c0678c060ae4c4630d930fe83102c

SHA-1

将待加密串进行SHA计算后形成160比特位(40位16进制)的摘要。

对比md5,摘要信息更长,运算过程更复杂,速度更慢,但相对也更加安全。

字符串:jiajun

SHA-1摘要:26352d75496932fd05e65724610ce1aaadf9259c

彩虹表破解hash算法

上面提到的两种数字摘要算法md5和sha-1都是不可逆算法,那么如何破解呢?彩虹表是一种破解的方式。

明文    hash算法    密文

xxx    md5    xxx

xxx    sha-1    xxx

彩虹表破解法通过这样的一张表进行查询,比如攻击者拿到了一个用户密码密文,是通过md5算法加密的,那么他可以在这样的一张表进行查询,从而查到密码的明文。

彩虹表是不断的积累的过程,表的内容不断丰富,从而破解的机率慢慢提高。

如果用户的密码是常见的密码,比如说生日,攻击者知道有些用户会用生日作为密码,那么攻击者可以提前将这些生日组合进行计算,提前记录在表里面。那么在彩虹表查询很快可以查询的到密码明文。而如果密码较为复杂,如果泄露了密文,根据生成的密文在彩虹表进行查询,是很难查到的(因为表里面并没有)。这也就是为什么我们为用加盐的方法降低破解率的原因了。

信息编码

base64编码

base64不是一种加密算法而是一种编码算法

将二进制数据编码成ascll码。比如说我们将图片以json的形式上传到服务器,那么可以将图片二进制数据通过base64编码转化为二进制(html img可以直接展示base64编码图片)。

base64是可逆的,通过解码算法可以恢复成二进制数据,所以根本不能加密。

16进制编码

将字符串内容转化为16进制数据编码

对称加密

实现

发送方和接收方约定一个密钥,生成加密密文发送。接收方接受后,使用相同的密钥和加密算法的逆算法进行解密。通俗将,我给小花写一封情书,然后放在一个上锁的小箱子,经过多人的,最后到达小花,小花通过相同的钥匙打开箱子。但是如果钥匙中途被人捡到,那么情书就公开了。所谓对称指的是加密解密用同一个加密密钥。

特点

算法是公开的,加密速度快。

一旦泄露密钥,因为算法是公开的,所以可以轻松解密。

应用分析

A向B发送秘密文件,这个时候可以采用对称加密算法,没有密钥者不能解密文件。

如果密钥泄露那么文件可以被解密,而且随着技术的发展,如果采用穷举暴力解密也是有可能。

如果A向很多人发送秘密文件,那么需要多次约定。


对称加密算法

DES算法,密钥64位

DES算法属于对称加密算法,明文按64位进行分组,密钥长64位,但事实上只有56位参与DES 
运算(第8、 16、 24、 32、 40、 48、 56、 64位是校验位,使得每个密钥都有奇数个1),分组后的明文和56位的密钥按位替代或交换的方法形成密文。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解,因此演变出了3DES算法。 3DES是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密,是DES的一个更安全的变形

AES算法,,密钥长度之处128,192,256三种,加密强度更高。


非对称加密


实现

A向B发送消息,B先产生一个公钥和私钥,然后将公钥公开,A获得公钥。

然后用公钥进行加密,然后将密文发送给B。

B得到后用私钥进行解密。

特点

非对称加密更加复杂,所以加密解密速度没有对称加密快,但是也更加安全。

非对称加密算法

RSA算法

应用分析

即使中途有人截获文件,因为没有私钥,并且加密算法复杂,解密是很困难的。

如果A向多人发送秘密文件,那么他不需要多次约定的过程,从公钥库根据接收方的公钥分别进行加密就行。

数字签名

是对非对称加密算法和数字摘要算法的综合运用。

实现

A给B发送信息,A生成公钥和私钥,将公钥公开。

A对发送消息进行数字摘要算法,然后再通过私钥进行加密。

A将加密后的密文和原文发送给B

B收到后,对密文用公钥进行解密,获得串C,再用原文进行摘要算法,获得串D,然后对比C D。这样就能确认A的身份。

数字签名:将明文进行摘要,然后再通过私钥进行加密的结果

数字签名算法

MD5withRSA算法

SHA1withRSA算法

应用分析

B收到A的文件,B想确认是A发送的,那么可以根据数字签名方式,根据A的公钥进行解密然后比较,因为A的私钥是不公开的,这样匹配成功就能确认是A发送的。

数字证书

网络用户的数字证书由数字证书认证机构(CA)进行颁发。

实现

A给B发送消息,A生成公钥和私钥。

A将公钥,还有公钥持有者,签名算法,过期时间等信息发送给CA(数字证书认证机构)

CA认可信息之后,通过CA的私钥进行签名,这时候数字证书就产生了。

接着A将明文,明文数字签名,和数字证书一起发送给B

B接受到后,通过CA的公钥进行解密,进行第一次校验,校验数字证书。

验证成功后,进行第二次检验,提取数字证书中的公钥,对密文进行解密。

应用分析

在数字签名的基础上,再发送一个数字证书,这样的话接收方不需要维护一个公钥库,通过CA验证后在数字证书提取,获得公钥。

证书管理

keytool,openssl是常用的证书管理工具。


本文来自公众号


聚焦程序猿的世界,探讨技艺,分享资源,侃谈生活……



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值