赞
踩
登录密码对于用户来说是最重要的数据,所以在存储的时候需要进行加密,防止在一些外部攻击下用户重要数据被别人获取了。对于登录密码加密,本人整理了三种简单的方式。
具体思路如下:
(1)敏感数据参数#{data}改为AES_ENCRYPT(#{data},'MySQL')
- //在dao层写一条插入语句,插入用户名和密码,密码加密
- @Insert("insert into user values(#{username},AES_ENCRYPT(#{password},'MySQL'))")
- public int addUser(String username,String password);
- create database lib;
- use lib;
- create table user(
- username varchar(11),
- password varbinary(255)
- );
- //当插入成功就返回true
- @PostMapping("/user")
- public boolean addUser(String username,String password){
- return userDao.addUser(username,password);
- }
- @Select("select username,AES_DECRYPT(password,'MySQL') AS password from user where username=#{username} and password = #{password}")
- public User searchUser(@Param("username") String username,@Param("password") String password);
- public class HashEncryption {
- public String encrypt(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(password.getBytes("UTF-8"));
- byte[] results = md.digest();
- StringBuilder sb = new StringBuilder();
- for (byte bite : results) {
- sb.append(String.format("%02x", bite));
- }
- return sb.toString();
- }
- }
- @PostMapping("/user")
- public boolean addUser(String username,String password) throws UnsupportedEncodingException, NoSuchAlgorithmException {
- HashEncryption hashEncryption=new HashEncryption();
- return userService.addUser(username,hashEncryption.encrypt(username));
- }
可以参考:前端利用md5进行加密_js-md5 -d_~天吻蓝了海的博客-CSDN博客
1、数据库加密,可能会被解密
2、后端工具类加密,可能会被别人拦截前端传递的数据,导致泄露。
3、前端加密是一个优解,在不影响执行速度情况下。当然想前后端都加密一次也可以。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。