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 加盐_密码加盐相关推荐

  1. iframe懒加载_懒加载是如何实现的?

    作为网页内容的一部分,图像和视频通常要消耗很多资源加载.要提高网页应用的性能,如何避免资源浪费在加载图像和视频上就很重要了.但是,很多时候我们都不愿意减少网页上的媒体资源,所以我们经常无从下手.幸运的 ...

  2. java证书加签_证书加签、验签、加密、解密Demo

    package sslSocket; import javax.crypto.Cipher; import java.io.FileInputStream; import java.security. ...

  3. 浏览器中禁用某些js加载_禁用加载项以加快Internet Explorer 9中的浏览

    浏览器中禁用某些js加载 We've shown you how to enhance Internet Explorer with add-ons, similar to Firefox and C ...

  4. java 滚动加载_滚动加载 - java-苦苦甜甜的个人空间 - OSCHINA - 中文开源技术交流社区...

    html代码如下: 滚动条距离底部 #parse("front/common/include.html") $(function () { var i = 4; $(window) ...

  5. java pdf无法加载_无法加载PDF文档 - Angular JS - BLOB

    我试图从Web API获取PDF文档,并希望在Angular App中显示 . 获得"Failed to load PDF document error" . 我已经关注了&quo ...

  6. cura 4.8 加插件_不能自己加,只能使用市场的

    首先如何打开现有的插件安装界面,看知乎大佬 https://www.3dzyk.cn/thread-9811-1-1.html 屏幕有WIFI,想找驱动,找不到,找到了plugin,装不了,在市场找到 ...

  7. 密码加盐原理及其实现

    目录 1. 背景介绍 2. MD5加密算法 2.1 MD5算法的介绍 2.2 MD5算法的缺点 3. 加盐算法 3.1 什么是加盐算法 3.2 加盐算法的演示 4. 总结 1. 背景介绍 加密密码是现 ...

  8. SpringBoot Security 自定义登录验证逻辑+密码加盐

    密码加盐思路 JAVA 加盐加密方法_Teln_小凯的博客-CSDN博客 盐加密方法 @ApiOperation(value = "002-加密")@PreAuthorize(&q ...

  9. mysql 加盐_【mysql】当加盐算法需要改变,数据库该如何更新?

    假设网站上有大量的注册用户,因为某些情况需要改变用户密码的加盐算法,那么数据库里的用户信息该怎么更新? 我想到的方法是:新增一个字段,新的加盐算法正式上线后,用户第一次成功登录时就把新的加盐后的值存到 ...

最新文章

  1. 西门子s7-400闭环控制模块_西门子6ES7312-1AE14-0AB0
  2. 用JAVA开发网站,需要学哪些呢?
  3. Disqus API 用法 How to get your Disqus API keys
  4. 僵尸肖恩黑胶唱片_建立一个非常适合黑胶唱片的DIY放大器套件
  5. 软件外包的话居然会有这样的后果...
  6. Git常用的步骤和命令
  7. Socket TCP UDP
  8. Centos7 搭建 hadoop3.1.1 集群教程
  9. 035 spring amqp
  10. Netty实战——Channel、EventLoop和ChannelFuture详解
  11. Linux 主机规划与磁盘分区
  12. 如何做到24小时监控某个网页,在网页变化或者更新的时候第一时间接到通知
  13. foxpro获取html数据类型,FoxPro数据库写入html文件中
  14. CESIUM例子学习(一)——动态模型加载
  15. 如何下载 Chrome 应用商店的 .crx 文件
  16. PTA(CCCC决赛模拟)----秀恩爱分得快 (25分)
  17. 利用快慢指针判断循环
  18. Oracle 换库时发生 Connections could not be acquired from the underlying database
  19. Shell 脚本的详细解读 (一)
  20. 精艺熔炼,笃行致远——美和易思34期大数据技术师资项目成功举行

热门文章

  1. 伤害世界怎么自建服务器,伤害世界(Hurtworld)最便捷开服架设服务器攻略 伤害世界怎么开私服...
  2. 什么是anaconda
  3. 辣鸡,曝光一波秋招毁约公司!!!
  4. 冷链冷库|果蔬保鲜储藏冷链冷库 海格里斯带你走进果蔬冷库世界
  5. 表格通用样式el-table的表头颜色样式,表内边框行高样式,点击行高亮变颜色
  6. bilstm命名实体识别任务
  7. 第21讲:Python字符串格式化的概念以及使用百分号作为占位符对字符串进行格式化
  8. 如何做到4小时以上的长时间精神专注?
  9. 联想g510换固态硬盘,相关问题
  10. 连马云都自愧不如 真正的草根创业者