生成Salt值

package util;

import java.util.Random;

public class Salt {

    public String getSalt()
{
Random random = new Random();
StringBuilder sBuilder = new StringBuilder(16);
sBuilder.append(random.nextInt(99999999)).append(random.nextInt(99999999));
int len = sBuilder.length();
if (len < 16) {
for (int i = 0; i < 16 - len; i++) {
sBuilder.append("0");
}
}
String salt = sBuilder.toString();
return salt;
}
}

MD5:

package util;

import java.security.MessageDigest;

import org.apache.commons.codec.binary.Hex;

public class MD5 {

    //使用Apache的Hex类实现Hex(16进制字符串和)和字节数组的互转
private static String md5Hex(String str) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(str.getBytes()); //
return new String(new Hex().encode(digest));
// } catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
return "";
}
}
/**
* 简单的MD5加密
* @param password
* @return
*/
public String getEsayStrMD5(String password) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
try {
byte strTemp[] = password.getBytes("UTF-8");
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte md[] = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 15];
str[k++] = hexDigits[byte0 & 15];
}
// return new String(str);
// } catch (Exception e) {
return null;
}
}
/**
* 获取的salt和
* @param password
* @param salt
* @return
*/
public String getSaltMD5(String password,String salt) { //System.out.println(password);
password = md5Hex(password + salt);
//System.out.println(password);
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 String.valueOf(cs);
}
}

Salt与MD5合并加密并验证

package util;

public class MD5_Salt {  

    public String get_MD5Salt(String password,String salt1,String salt2)
{ MD5 md5 =new MD5();
String password1=md5.getSaltMD5(password, salt1);
String dbpassword =md5.getSaltMD5(password1, salt2);
return dbpassword; }
public boolean TF_Password_DBpassword(String password, String dbpassword,String salt1,String salt2)
{
int i=0;
MD5 md5 =new MD5();
password=md5.getSaltMD5(password, salt1);
String dbpassword1 =md5.getSaltMD5(password, salt2);
if(dbpassword1.equals(dbpassword))
{
i=1;
} if(i==0)
{
return false;
}
else
{
return true;
} }
}

MD5+Salt值的更多相关文章

  1. 关于MD5+salt盐加密

    MD5+salt 最近浏览浏览一些帖子时,发现曾经引以为傲的md5加密算法,虽然是无法解密的算法,但是现在可以通过FELHELP(谷歌浏览器插件)或者一些字典可以套出来,.但是当md5+salt值时, ...

  2. ecshop 重置后台密码 MD5+salt

    ecshop密码加密方式: MD5 32位+salt,简单来说就是明文密码用MD5加密一次,然后在得到的MD5字符后边加上salt字段值(salt值为系统随机生成,生成以后不再改变)再进行一次MD5加 ...

  3. ecshop教程:重置后台密码MD5+salt

    ecshop密码加密方式: MD5 32位+salt,简单来说就是明文密码用MD5加密一次,然后在得到的MD5字符后边加上salt字段值(salt值为系统随机生成,生成以后不再改变)再进行一次MD5加 ...

  4. MD5,SHA1 都是哈希 摘要算法 MD5+SALT BCRYPT

    为什么说 MD5 是不可逆的? md5是摘要算法,你学数据结构的时候学过哈希表吧?也有叫散列的.md5就是干那个用的 当然,如果硬要说的话...你可以用md5 hash一段字符串,也算是加密好了,不过 ...

  5. shiro密码的比对,密码的MD5加密,MD5盐值加密,多个Relme

    有具体问题的可以参考之前的关于shiro的博文,关于shiro的博文均是一次工程的内容 密码的比对   通过AuthenticatingRealm的CredentialsMatcher方法 密码的加密 ...

  6. c# MD5盐值加密

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  7. 一个密码经过多次MD5加密能否提高安全性?Java MD5盐值加解密

    什么是MD5? MD5(Message Digest Algorithm 5,信息摘要算法5),是计算机广泛使用的摘要算法(又称哈希算法)之一.MD5是将一段信息,通过其不可逆的字符串变换算法,产生了 ...

  8. SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期

    写在前面 通过前几篇文章的学习,我们从大体上了解了shiro关于认证和授权方面的应用.在接下来的文章当中,我将通过一个demo,带领大家搭建一个SpringBoot整合Shiro的一个项目开发脚手架, ...

  9. SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期

    写在前面 在上一篇文章<SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期>当中,我们初步实现了SpringBoot整合Shiro ...

随机推荐

  1. IntelliJ Idea 配置Tomcat提示Port is not specified

    修改Debug这里的端口就好了

  2. Redis的并发竞争问题

    问题描述:多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了.或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了. 一个key的值是1,本来按顺序 ...

  3. [转] babel-plugin-react-css-modules配置

    自己的react项目用到了css-modules,由于不太想在写className时写style.xxx于是google解决方案,找到了这货->babel-plugin-react-css-mo ...

  4. Windows 7下java SDK下载、安装及环境变量设置

    第一步:下载Java JDK   1 登录官网站下载正版JDK   2 点击"SDK Download"进入Java JDK下载页面 注明: Java JDK和Java JRE区别 ...

  5. python2 python3 转换,兼容

    0. 1.参考 https://docs.python.org/3/library/urllib.html urllib is a package that collects several modu ...

  6. 删除了原有的offset之后再次启动会报错park Streaming from Kafka has error numRecords must not ...

          笔者使用Spark streaming读取Kakfa中的数据,做进一步处理,用到了KafkaUtil的createDirectStream()方法:该方法不会自动保存topic parti ...

  7. Selenium自动化测试框架的搭建

          说 起自动化测试,我想大家都会有个疑问,要不要做自动化测试? 自动化测试给我们带来的收益是否会超出在建设时所投入的成本,这个嘛别说是我,即便是高手也很难回答,自动化测试的初衷是美好的,而测 ...

  8. Zookeeper安装使用

    一:zookeeper介绍 Zookeeper 分布式协调组件.本质一个软件. Zookeeper常用功能 1 发布订阅功能.把zookeeper当作注册中心原因. 2 分布式/集群管理功能. 使用j ...

  9. 如何让你的数据有null

    2018-11-13   09:25:17 如何让你的数据有null 返回时null属性不显示: String str = JSONObject.toJSONString(obj); 返回为null属 ...

  10. 3、Qt Project之Socket网络编程

    Socket网络编程  Step1:首先完成整个界面的设计 <?xml version="1.0" encoding="UTF-8"?> <u ...