一些常见的数据加密策略

霞客技术协会
需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。

为什么我们需要加密

系统开发中,对数据的加密是不可缺少的,例如登录时对用户的密码加密策略,虽然目前https协议得到了很大的推广,但还是有少部分使用http协议的网站,如果再次使用明文传输数据,那就非常危险了。

比如登录策略,发起登录时一般是访问登录接口,将账号,密码传输过去。比如这样

2345截图20211028093243.png

使用浏览器自带的抓包工具,可以看见,此时的密码就是明文的,没有经过加密。如果这个网站是http协议那就很危险了。

所以一般会选择在登录时前端对数据进行加密,传输到后端后,由后端解密,后端再去进行后续处理。比如这个网站,输入账号密码登录后,使用浏览器自带的抓包工具就可以查看到,密码经过了加密处理。

2345截图20211028093243.png

尽管前端将数据传输给后端时经过了加密,在数据库中的密码依然需要加密。防止数据库被窃取,泄露用户隐私,造成财产安全的损失。

加密前

2345截图20211028093243.png

加密后

2345截图20211028093243.png

这样一来,哪怕不小心发生数据库信息泄露,也不容易将用户密码直接暴露出去。

常见加密策略

1.散列算法

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。

比如MD5算法。该加密算法很常用,但是随着大数据时代,该算法也能被破解。

另一个算法BCrypt算法,是一种加盐的加密算法,MD5算法一段密码每次经过hash后生成的值是一样的,但是BCrypt加密算法可以使得一段密码加密后,内容不唯一,可调用相关函数进行与数据库存放的密文进行匹配。

2345截图20211028093243.png

2.对称加密

需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。

因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。

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

AES全称是Advanced Encryption Standard,即高级加密标准,该算法是美国联邦政府采用的一种对称加密标准,这个标准用来代替原先的DES算法,已经广为全世界所使用,已然成为对称加密算法中最流行的算法之一。AES算法作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点,设计有三个密钥长度:128,192,256位,比DES算法的加密强度更高,更为安全。

2345截图20211028093243.png

3.非对称加密

对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公钥和私钥。

通常由前端第一次访问后端获取到公钥,再通过公钥对信息加密后再向后端传输数据,后端获取到数据后,再通过私钥进行解密,从而实现密码加密传输。

2345截图20211028093243.png

常用RSA算法

RSA非对称加密算法是1997年由Ron Rivest、AdiShamirh和LenAdleman开发的,RSA取名来自开发他们三者的名字。RSA是目前最有影响力的非对称加密算法,它能抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但反过来想要对其乘积进行因式分解却十分困难,因此可以将乘积公开作为加密秘钥。

4.数字签名

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。

以上加密算法只是简单的介绍,具体使用方式可以去查询相关技术文档以使用。

参考文章

JAVA开发必须掌握的5中加密策略

https://blog.csdn.net/huang_yx/article/details/79752565

加密策略

https://blog.csdn.net/aipiannian6725/article/details/101157803

BCrypt加密的原理,以及常见的加密算法

https://blog.csdn.net/qq_41174684/article/details/90214341

对称加密

https://blog.csdn.net/qq_44836294/article/details/108488941

对称加密、非对称加密、公钥、私钥究竟是个啥?

https://blog.csdn.net/albertsh/article/details/106536857

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论