定义加密的工具类

  1. package com.ctgu.yxr.utils;
  2. import java.io.UnsupportedEncodingException;
  3. import java.security.MessageDigest;
  4. import java.security.NoSuchAlgorithmException;
  5. /**
  6. * @author yxr
  7. */
  8. public class EncodeBySHA256 {
  9. public static String encodeBySHA(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
  10. MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
  11. messageDigest.update(password.getBytes("UTF-8"));
  12. return byte2Hex(messageDigest.digest());
  13. }
  14. private static String byte2Hex(byte[] bytes){
  15. StringBuffer stringBuffer = new StringBuffer();
  16. String temp = null;
  17. for (int i = 0; i < bytes.length; i++) {
  18. temp = Integer.toHexString(bytes[i] & 0xFF);
  19. if (temp.length() == 1) {
  20. // 1得到一位的进行补0操作
  21. stringBuffer.append("0");
  22. }
  23. stringBuffer.append(temp);
  24. }
  25. return stringBuffer.toString();
  26. }
  27. }

注册新用户

service实现类:

  1. /**
  2. * 注册新用户
  3. * @param user 用户信息
  4. * @return 存储后的信息
  5. */
  6. @Override
  7. public User addOne(User user) throws NoSuchAlgorithmException, UnsupportedEncodingException {
  8. String password = user.getPassword();
  9. String encodePwd = EncodeBySHA256.encodeBySHA(password);
  10. user.setPassword(encodePwd);
  11. return userDao.save(user);
  12. }

用户登录

登录逻辑:根据用户的用户名查到对应加密后的密码,然后把用户输入进来的密码进行同样的加密,将加密后得到的字符串和数据库中存的字符串进行比对,如果一样,则登录成功。反之,登陆失败。

  1. /**
  2. * 登录
  3. * @param userName 用户名
  4. * @param pwd 密码
  5. * @return 是否成功
  6. */
  7. @Override
  8. public Boolean login(String userName, String pwd) throws UnsupportedEncodingException, NoSuchAlgorithmException {
  9. String pwdByName = userDao.getPwdByName(userName);
  10. String encodePwd = EncodeBySHA256.encodeBySHA(pwd);
  11. return encodePwd.equals(pwdByName);
  12. }