前端登录过程aes加密
2022/2/8 23:54:06
本文主要是介绍前端登录过程aes加密,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
项目场景:
在做登录的时候用户名和密码的安全至关重要,所以一般在登录的过程中会对用户名做加密处理
业务处理过程:
在这里采用的是常见的处理模式,aes加解密。简单来说就是:前后端约定好随机的key,前端加密后将随机key和账户名以及密码提交,后端解密出密码,与数据库进行比对,用户登录完成。
- 前后端约定好key(例:时间戳,每次提交时间戳都会不断变化,安全性更好。注意:key默认16位,时间戳不足的位数要和后端约定好怎么补足,可以随便加一些字符)
- 前后端约定好加解密的方式(注:如果服务部署在linux环境下,java解密时会有报错)
//说明: // 1.如果加密解密涉及到前端和后端,则这里的key要保持和后端的key一致 // 2.AES的算法模式有好几种(ECB,CBC,CFB,OFB),所以也要和后端保持一致 // 3.AES的补码方式有两种(PKS5,PKS7),所以也要和后端保持一致 // 4.AES的密钥长度有三种(128,192,256,默认是128),所以也要和后端保持一致 // 5.AES的加密结果编码方式有两种(base64和十六进制),具体怎么选择由自己定,但是加密和解密的编码方式要统一 /*加密*/ /** * * @param {*} str * @param {*} aesKey * @returns */ export function aesEncode(str, aesKey) { if (typeof aesKey !== "string") aesKey = aesKey.toString() // aesKey不足16位的补足 if (aesKey.length !== 16) { let flag = aesKey.length while (flag !== 16) { flag < 16 ? aesKey = aesKey + '6' : aesKey = aesKey.slice(0, aesKey.length - 1) flag = aesKey.length } } // var key = CryptoJS.enc.Utf8.parse(aesKey); // 默认的 KEY 与 iv const srcs = CryptoJS.enc.Utf8.parse(str) const KEY = CryptoJS.enc.Utf8.parse(aesKey) // ''中与后台一样 密码 const IV = CryptoJS.enc.Utf8.parse(aesKey) // ''中与后台一样 var encryptedData = CryptoJS.AES.encrypt(srcs, KEY, { iv:IV, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encryptedData.toString(); }
这篇关于前端登录过程aes加密的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-26uniapp 哪里看mp-html 是否有引用-icode9专业技术文章分享
- 2024-09-26uniapp 怎么显示html 代码-icode9专业技术文章分享
- 2024-09-26uniapp 有没有自带mp-html 吗-icode9专业技术文章分享
- 2024-09-25前端高频大厂面试真题解析与实战教程
- 2024-09-25前端高频面试题详解:新手必看指南
- 2024-09-25前端高频面试真题详解与实战攻略
- 2024-09-25前端大厂面试真题及答案详解:从零开始的初级面试攻略
- 2024-09-25前端面试实战:新手必备技巧与案例解析
- 2024-09-25前端面试题及答案详解:初级面试必备
- 2024-09-25前端面试真题及答案详解:适合入门与初级用户