Java 密码加密加盐 代码

mac2024-05-13  31

由于没时间整理,直接贴出代码,不理解的请留言,谢谢。

 

 

package com.rocky.fintech.boss.util; import org.apache.commons.codec.binary.Hex; import java.security.MessageDigest; import java.util.Random; /** * Created with IntelliJ IDEA. * * @Auther: zhangyi * @Date: 2019/10/21/14:33 * @Description: 加密加盐 */ public class EncryptedUtil { /** * 生成含有随机盐的密码 */ public static String generate(String password,String randomSalt) { password = md5Hex(password + randomSalt); char[] cs = new char[48]; for (int i = 0; i < 48; i += 3) { cs[i] = password.charAt(i / 3 * 2); char c = randomSalt.charAt(i / 3); cs[i + 1] = c; cs[i + 2] = password.charAt(i / 3 * 2 + 1); } return new String(cs); } /** * 生成随机盐 */ public static String getRandomSalt() { Random r = new Random(); StringBuilder sb = new StringBuilder(16); sb.append(r.nextInt(99999999)).append(r.nextInt(99999999)); int len = sb.length(); if (len < 16) { for (int i = 0; i < 16 - len; i++) { sb.append("0"); } } return sb.toString(); } /** * 校验密码是否正确 */ public static boolean verify(String password, String md5) { char[] cs1 = new char[32]; char[] cs2 = new char[16]; for (int i = 0; i < 48; i += 3) { cs1[i / 3 * 2] = md5.charAt(i); cs1[i / 3 * 2 + 1] = md5.charAt(i + 2); cs2[i / 3] = md5.charAt(i + 1); } String salt = new String(cs2); return md5Hex(password + salt).equals(new String(cs1)); } /** * 获取十六进制字符串形式的MD5摘要 */ public static String md5Hex(String src) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] bs = md5.digest(src.getBytes()); return new String(new Hex().encode(bs)); } catch (Exception e) { return null; } } }

 

 

 

@PostMapping("/update/password") public ResponseDTO<Boolean> updateSysAdminPassword(@RequestBody RequestDTO<SysAdminDO> request) { SysAdminDO sysAdmin = request.getParam(); if (sysAdmin == null) { return RestResponseUtil.response(HttpStatus.BAD_REQUEST, this.messageService.getMessage("request.parameter.invalid"), false); } Long id = sysAdmin.getId(); String password = sysAdmin.getPassword(); if(id == null || id < 1 || password == null || StringUtils.isBlank(password)){ return RestResponseUtil.response(HttpStatus.BAD_REQUEST, this.messageService.getMessage("request.parameter.invalid"), false); } return RestResponseUtil.ok(this.messageService.getMessage("request.success"), this.sysAdminService.updateSysAdmin(sysAdmin)); }

 

 

 

package com.rocky.fintech.boss.service.sysadmin; import com.rocky.fintech.boss.entity.sysadmin.SysAdminBO; import com.rocky.fintech.boss.entity.sysadmin.SysAdminDO; import com.rocky.fintech.boss.entity.sysadmin.SysAdminQuery; import java.util.List; public interface SysAdminService { List<SysAdminBO> getSysAdminList(SysAdminQuery sysAdminQuery); boolean saveSysAdmin(SysAdminDO sysAdminDO); boolean updateSysAdmin(SysAdminDO sysAdminDO); boolean checkSysAdminPropertyUnique(SysAdminQuery sysAdminQuery); SysAdminBO getSysAdmin(SysAdminQuery sysAdminQuery); }

 

 

@Override public boolean updateSysAdmin(SysAdminDO sysAdminDO) { if(!StringUtils.isBlank(sysAdminDO.getPassword()) && sysAdminDO.getId() > 0){ String randomSalt = EncryptedUtil.getRandomSalt(); String password = sysAdminDO.getPassword(); sysAdminDO.setPassword(EncryptedUtil.generate(password,randomSalt)); sysAdminDO.setSalt(randomSalt); sysAdminDO.setGmtModified(LocalDateTime.now()); return this.sysAdminMapper.updateSysAdmin(sysAdminDO) > 0 ? true : false; } if(!StringUtils.isBlank(sysAdminDO.getUserName()) && sysAdminDO.getRoleId() > 0){ sysAdminDO.setGmtModified(LocalDateTime.now()); int row = this.sysAdminMapper.updateSysAdmin(sysAdminDO); if(row > 0){ SysAdminRoleDO sysAdminRole = new SysAdminRoleDO(); sysAdminRole.setRoleId(sysAdminDO.getRoleId()); sysAdminRole.setAdminId(sysAdminDO.getId()); return this.sysAdminMapper.updateSysAdminRole(sysAdminRole) > 0 ? true : false; } } if(sysAdminDO.getStatus() != null && sysAdminDO.getId() > 0){ sysAdminDO.setGmtModified(LocalDateTime.now()); return this.sysAdminMapper.updateSysAdmin(sysAdminDO) > 0 ? true : false; } return false; }

 

结束

 

 

 

最新回复(0)