加密算法实现

本文介绍了加密算法的三大类别:哈希、对称加密(如DES、3DES、AES)和非对称加密(如RSA)。讨论了对称加密的效率与安全性,以及非对称加密的密钥管理。提到了信息摘要算法如MD5和SHA系列,强调了它们在验证信息完整性和来源可靠性上的作用。同时,文章探讨了在实际应用中,如何使用JWT进行身份验证,包括JWT的组成部分、优缺点以及在Spring Boot项目中的实现流程。
摘要由CSDN通过智能技术生成

加密算法
加密算法可以归结为三大类:哈希算法、对称加密算法、非对称加密算法

1、DES算法进行加密解密;后来人们觉得DES不够安全,发明了3DES算法;而如今最为流行的对称加密算法是AES算法。
对称算法的好处是加密解密的效率比较高。相应的,对称算法的缺点是不够安全。

2、RSA算法是最常见的非对称加密算法。和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的。使用RSA算法,
只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的。

3、信息摘要算法又叫加密散列算法,加密过程不需要密钥,常见的加密散列算法有MD系列和SHA系列。
从严格意义上来说,哈希算法并不属于加密算法,但它在信息安全领域起到了很重要的作用。最重要的作用就是生成信息摘要,
用以验证原信息的完整性和来源的可靠性。

一个理想的加密散列函数应该具备以下特性:
1、任何信息传入后,输出的总是长度固定;
2、消息摘要看起来是“随机的”,这样根据原始信息就很难推测出值;
3、好的散列函数碰撞概率应该极低,也就是不同信息传入后得到相同值的概率;

解决方案:在数据库中不直接存储口令原文,而是存储口令的密文。密文是通过原文执行消息摘要计算后的结果。可以考虑使用JDK
提供的md5算法进行加密处理,但是由于碰撞算法的发展,所以直接加密的结果可以通过碰撞算法进行解密。

解决方案:引入一个加密算法的参数–salt盐值,而且进行多次hash计算获取加密的指纹数据,可以在一定程度上方法使用碰撞
算法进行解密

JDK提供了md5和sha-1算法的实现,这里选择使用md5进行加密

前后端分离开发或者使用水平扩展部署多个应用时,用户跟踪就是个问题。
1、依赖于代理服务器Nginx实现
2、可以使用spring session依赖于redis实现
3、依赖于token身份验证方式实现

token就是一种身份验证方法,扩展性和安全性更高,非常适合用在Web应用和移动开发应用上。

1、token验证流程
使用token身份验证,服务器端就不会存储用户的登录记录。
(1)客户端使用用户名跟密码请求登录;
(2)服务端收到请求,去验证用户名与密码;
(3)验证成功后,服务端会签发一个Token,再把这个Token发送给客户端;
(4)客户端收到Token以后可以把它存储起来,比如放在Cookie里或者Local Storage里;
(5)客户端每次向服务端请求资源的时候需要带着服务端签发的T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值