mysql 加盐_密码加盐
import java.security.MessageDigest;
import java.util.Random;
import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;
/**
* @fileName Md5PasswordUtil.java
* @Description 明文密码加密加盐操作
* 1:生成加密密码:首先使用randomSalt获取随机盐值,并保存;再将随机盐值和明文密码传入generate生成加密密文
* 2:密码校验:将明文密码和加密后的密文传入verify,校验成功返回true,反则返回false
* @author user
* @date 2017年9月6日
* @version 1.0
*/
public class Md5PasswordUtil {
/**
* 生成16位数的随机salt值
* @return
*/
public static String randomSalt(){
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");
}
}
String salt = sb.toString();
return salt;
}
/**
* 生成含有随机盐的密码
* @param password 明文密码
* @param salt 盐值
* @return
*/
public static String generate(String password,String salt) {
password = md5Hex(password + salt);
char[] cs = new char[48];
for (int i = 0; i < 48; i += 3) {
cs[i] = password.charAt(i / 3 * 2);
char c = salt.charAt(i / 3);
cs[i + 1] = c;
cs[i + 2] = password.charAt(i / 3 * 2 + 1);
}
return new String(cs);
}
/**
* 校验密码是否正确
* @param password 明文密码
* @param md5 加密加盐后的密码
* @return
*/
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());
new HexBin();
return new String(HexBin.encode(bs));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
mysql 加盐_密码加盐相关推荐
- iframe懒加载_懒加载是如何实现的?
作为网页内容的一部分,图像和视频通常要消耗很多资源加载.要提高网页应用的性能,如何避免资源浪费在加载图像和视频上就很重要了.但是,很多时候我们都不愿意减少网页上的媒体资源,所以我们经常无从下手.幸运的 ...
- java证书加签_证书加签、验签、加密、解密Demo
package sslSocket; import javax.crypto.Cipher; import java.io.FileInputStream; import java.security. ...
- 浏览器中禁用某些js加载_禁用加载项以加快Internet Explorer 9中的浏览
浏览器中禁用某些js加载 We've shown you how to enhance Internet Explorer with add-ons, similar to Firefox and C ...
- java 滚动加载_滚动加载 - java-苦苦甜甜的个人空间 - OSCHINA - 中文开源技术交流社区...
html代码如下: 滚动条距离底部 #parse("front/common/include.html") $(function () { var i = 4; $(window) ...
- java pdf无法加载_无法加载PDF文档 - Angular JS - BLOB
我试图从Web API获取PDF文档,并希望在Angular App中显示 . 获得"Failed to load PDF document error" . 我已经关注了&quo ...
- cura 4.8 加插件_不能自己加,只能使用市场的
首先如何打开现有的插件安装界面,看知乎大佬 https://www.3dzyk.cn/thread-9811-1-1.html 屏幕有WIFI,想找驱动,找不到,找到了plugin,装不了,在市场找到 ...
- 密码加盐原理及其实现
目录 1. 背景介绍 2. MD5加密算法 2.1 MD5算法的介绍 2.2 MD5算法的缺点 3. 加盐算法 3.1 什么是加盐算法 3.2 加盐算法的演示 4. 总结 1. 背景介绍 加密密码是现 ...
- SpringBoot Security 自定义登录验证逻辑+密码加盐
密码加盐思路 JAVA 加盐加密方法_Teln_小凯的博客-CSDN博客 盐加密方法 @ApiOperation(value = "002-加密")@PreAuthorize(&q ...
- mysql 加盐_【mysql】当加盐算法需要改变,数据库该如何更新?
假设网站上有大量的注册用户,因为某些情况需要改变用户密码的加盐算法,那么数据库里的用户信息该怎么更新? 我想到的方法是:新增一个字段,新的加盐算法正式上线后,用户第一次成功登录时就把新的加盐后的值存到 ...
最新文章
- 最大权值闭合子图的证明详解
- 通过ID在JavaScript对象数组中查找对象
- you aren‘t using a compiler supported by lombok, so lombok will not work and
- VTK:模型之FinanceFieldData
- ABAP Authorization trace工具
- 网易邮箱大师如何定时发送 定时发送邮件方法步骤详解
- weak_ptr打破环状引用
- 批量生成10个虚拟主机配置
- 设计模式学习笔记(1)——单例模式
- [Windows Server 2012] SQL Server 备份和还原方法
- 单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...
- Python爬虫理论 | (2) 网络请求与响应
- 教你七招记单词快又准
- RPM 包的构建 - SPEC 基础知识
- netty报错:LEAK: ByteBuf.release() was not called before it‘s garbage-collected
- 批量安装/卸载/fore-stop apk的脚本
- Mysql 多表连接查询
- 用计算机弹Despacit,《计算器:游戏》老师,这真的只是个长得好看的计算器而已!...
- Arduino的硬件:什么是单片机?什么是Arduino?Arduino和单片机区别?Arduino有哪些种类?Arduino扩展板有哪些?
- 2020中国高校计算机大赛网络技术挑战赛,风起云涌!2020 “中国高校计算机大赛-网络技术挑战赛”总决赛即将在浙南科技城开赛...