前后端分离项目使用AES对称加密算法做密码验证遇到的坑

本文讲述了在前后端分离项目中为提高安全性,采用AES对称加密算法对密码进行加密处理的过程。服务器端通过随机生成密钥并与Base64编码解码器配合,对密码解码。客户端则利用crypto-js库对密码加密,避免明文传输。文中提到了在实现过程中需要注意的细节,如密钥字符串化处理和避免重复Base64编码的陷阱。
摘要由CSDN通过智能技术生成

昨天优化前端登录组件发现前端的密码在HTTP传输过程中密码是明文传输的,这样就很不安全了,所以我决定对前端的密码进行加密

考虑到我服务器端的密码已经使用了Bcrypt算法对存入数据库的密码进行了加密,最终前端的加密算法我选择了AES,

每次登录前时服务器生成一个随机的密钥,发送给客户端,客户端使用这个密钥对密码进行加密,然后返回给服务器进行解密并和数据库中的密码进行比对

首先,因为密钥是每次请求时随机生成的,不管登录失败还是成功,密钥都会销毁,不会多次使用同一密钥,从而产生安全漏洞

这里说明下,随机生成的密钥存放在session中,请求完成后或者绘画断开密钥会随即销毁掉

废话不多说,上代码!!!

服务器实现代码

依赖包

import org.springframework.util.Base64Utils;

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

import java.nio.charset.StandardCharsets;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

Base64编码解码器

 public byte[] base64Decode(String plaintext) {
        return Base64Utils.decodeFromString(plaintext);
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值