Web后端项目中登录功能的密码加密操作

本文讨论了如何通过将员工表中的明文密码转换为MD5加密形式来增强安全性。文章详细介绍了修改数据库、Java代码实现以及在EmployeeServiceImpl中进行密码比对的步骤,以确保登录过程中的安全性。
摘要由CSDN通过智能技术生成

问题: 员工表中的密码是明文存储,安全性太低。
在这里插入图片描述
解决思路:

  1. 将密码加密后存储,提高安全性
    在这里插入图片描述

  2. 使用MD5加密方式对明文密码加密
    在这里插入图片描述

实现步骤:

  1. 修改数据库中明文密码,改为MD5加密后的密文
    打开employee表,修改密码
    在这里插入图片描述
  2. 修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码比对
    打开EmployeeServiceImpl.java,修改比对密码
/**
     * 员工登录
     *
     * @param employeeLoginDTO
     * @return
     */
    public Employee login(EmployeeLoginDTO employeeLoginDTO) {

        //1、根据用户名查询数据库中的数据
       
        //2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)
        //.......
        //密码比对
        // TODO 后期需要进行md5加密,然后再进行比对
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        if (!password.equals(employee.getPassword())) {
            //密码错误
            throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
        }

        //........

        //3、返回实体对象
        return employee;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例,演示如何在Java Web项目使用RSA加密后端管理员的登录进行加密: 1. 生成RSA密钥对 ``` KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); keyPairGen.initialize(1024); KeyPair keyPair = keyPairGen.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); // 将生成的公钥和私钥分别保存到文件或者数据库 ``` 2. 前端传送加密密码字符串 在前端登录页面,用户输入密码后,使用RSA公钥对密码进行加密,并将加密后的字符串传送到后端。 ``` function encryptPassword(password) { const publicKey = "MIGfMA0GCSq..."; const publicEncrypt = new JSEncrypt(); publicEncrypt.setPublicKey(publicKey); const encryptedPassword = publicEncrypt.encrypt(password); return encryptedPassword; } let encryptedPassword = encryptPassword(password); // 将encryptedPassword发送给后端 ``` 3. 后端使用RSA私钥解密密码字符串 在后端登录接口,接收到加密后的密码字符串后,使用RSA私钥对其进行解密。 ``` PrivateKey privateKey = readPrivateKeyFromFileOrDatabase(); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] encryptedPasswordBytes = Base64.decode(encryptedPassword); byte[] decryptedPasswordBytes = cipher.doFinal(encryptedPasswordBytes); String password = new String(decryptedPasswordBytes); ``` 注意,这里使用了Base64来对加密后的字符串进行解码,可以使用Java内置Base64类或第三方库实现。 另外,要注意保护好RSA私钥,避免泄露给攻击者。可以使用硬件安全模块(HSM)来保存私钥,或者使用加密保护私钥。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值