博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据(密码)加密 简单例子
阅读量:4210 次
发布时间:2019-05-26

本文共 2024 字,大约阅读时间需要 6 分钟。

数据(密码)加密

 

1.报错加密的交易密码

/**

* 保存用户交易密码

*

* @param user

* @param payPassword

*/

public boolean setPayPassword(User user, @NotNull String payPassword) {

if (user == null) {

log.error("user is null. do not save payPassword!");

return false;

}

// 生成交易密码盐

String payPasswordSalt = getSalt();

// 保存交易密码

user.setPayPassword(getEncryptedPassword(payPassword, payPasswordSalt));

user.setPayPasswordSalt(payPasswordSalt);

return this.updateByPrimaryKey(user) > 0;

}

/**

* 盐函数

* @return

*/

private String getSalt() {

//生成随机[a-z]字符串,包含大小写

return RandomStringUtils.randomAlphanumeric(6);

}

 

/**

* 生产密文

* @param password

* @param salt

* @return

*/

private String getEncryptedPassword(String password, String salt) {

return EncryptUtils.md5(password + salt);

}

 

/**

* 校验用户的交易密码

* @param user

* @param payPassword

*/

public boolean checkPayPassword(User user, @NotNull String payPassword) {

if (user == null) {

log.error("user is null by user {}", JSON.toJSONString(user));

return false;

}

String payPasswordMD5 = null;

// 如果有交易密码盐,需要添加交易密码盐加密

if (StringUtils.isNotBlank(user.getPayPasswordSalt())) {

payPasswordMD5 = getEncryptedPassword(payPassword, user.getPayPasswordSalt());

} else {

payPasswordMD5 = EncryptUtils.md5(payPassword);

}

return payPasswordMD5.equals(user.getPayPassword());

}

 

 

 

 

 

 

/**

* 生成MD5

*

* @param message

* @return

*/

public static String md5(String message) {

String md5 = "";

try {

// 创建一个md5算法对象

MessageDigest md = MessageDigest.getInstance("MD5");

byte[] messageByte = message.getBytes("UTF-8");

// 获得MD5字节数组,16*8=128位

byte[] md5Byte = md.digest(messageByte);

// 转换为16进制字符串

md5 = bytesToHex(md5Byte);

} catch (Exception e) {

log.error(String.format("md5 error %s", e.getMessage()));

}

return md5;

}

 

// 二进制转十六进制

protected static String bytesToHex(byte[] bytes) {

StringBuffer hexStr = new StringBuffer();

int num;

for (int i = 0; i < bytes.length; i++) {

num = bytes[i];

if (num < 0) {

num += 256;

}

if (num < 16) {

hexStr.append("0");

}

hexStr.append(Integer.toHexString(num));

}

return hexStr.toString().toUpperCase();

}

转载地址:http://fwrli.baihongyu.com/

你可能感兴趣的文章
大小不固定的图片和多行文字的垂直水平居中
查看>>
display:table-cell的集中应用
查看>>
display:table-cell自适应布局下连续单词字符换行
查看>>
css行高line-height的一些深入理解及应用
查看>>
我对CSS vertical-align的一些理解与认识(一)
查看>>
我对CSS vertical-align的一些理解与认识(二)
查看>>
CSS中height:100%和height:inherit的异同
查看>>
absolute元素在text-align属性下的对齐显示
查看>>
技术管理规划-设定团队的职能
查看>>
技术管理规划-如何设定团队的目标
查看>>
技术管理规划-如何规划团队的架构
查看>>
管理任务执行-如何排任务优先级
查看>>
0115 springboot template方式操作mongodb
查看>>
0116 spring的webFlux
查看>>
0121 spring-boot-redis的使用
查看>>
面试刷题31:分布式ID设计方案
查看>>
根据身份证号码来提取人员的信息【身份证号码的前六位所代表的省,市,区, 以及地区编码】的网上地址
查看>>
php安装工具 网址
查看>>
php NetBeans IDE Build 201208070001 打开一个现有的php 网站
查看>>
win7系统中, Microsoft Office Word已停止工作
查看>>