MD5加密技术(加盐)
来源:互联网 发布:recovery清除数据 编辑:程序博客网 时间:2024/06/06 03:48
import org.apache.commons.lang3.StringUtils;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;public class MD5Util { public static void main(String[] args) { //字符串加密 String str = "123456"; String salt = getSalt(); System.out.println(salt); System.out.println(getMD5CodeBySalt(str,salt)); } //对字符串进行MD5编码 public static String getMD5Code(String str){ if(StringUtils.isBlank(str)){ return null; } try { //创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); //使用指定的字节数组对摘要进行最后的更新,然后完成摘要计算 byte[] results = md.digest(str.getBytes()); //将得到的字节数组编程字符串返回 String resultString = byteArrayToHexString(results); return resultString.toUpperCase(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } //对字符串进行MD5编码加盐操作 public static String getMD5CodeBySalt(String str,String salt){ if(StringUtils.isBlank(str)){ return null; } return getMD5Code(getMD5Code(str)+salt); } //转换字节数组为十六进制字符串 private static String byteArrayToHexString(byte[] results){ StringBuffer resultNew = new StringBuffer(); for(int i = 0;i < results.length;i++){ resultNew.append(byteToHexString(results[i])); } return resultNew.toString(); } //16进制下数字到字符的映射数组 private static String[] HEXDIGITS = new String[]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; //将字节转化成十六进制的字符串 private static String byteToHexString(byte b){ int byteNum = b; if(byteNum < 0){ byteNum = byteNum + 256; } int d1 = byteNum / 16; int d2 = byteNum % 16; return HEXDIGITS[d1]+HEXDIGITS[d2]; } //传入的字符串加密后和Md5字符串的比较,常用语登录时密码的核对 private static boolean compareStringWithMD5Code(String str,String MD5Code){ boolean isEquals = false; if(StringUtils.isBlank(str)){ return isEquals; } if(MD5Code.equals(getMD5Code(str))){ isEquals = true; } return isEquals; } //生成一个10位的随机salt public static String getSalt(){ String salt = ""; Random rand = new Random(); for(int i=0;i<10;i++){ int num = rand.nextInt(3); switch(num){ case 0: char c1 = (char)(rand.nextInt(26)+'a');//生成随机小写字母 salt += c1; break; case 1: char c2 = (char)(rand.nextInt(26)+'A');//生成随机大写字母 salt += c2; break; case 2: salt += rand.nextInt(10);//生成随机数字 } } return salt; }}
阅读全文
0 0
- MD5加密技术(加盐)
- MD5加密和加盐
- MD5 (加盐) 加密
- MD5加密+加盐
- 密码Md5加密+加盐
- MD5 加密 以及 加盐加密
- Android中MD5加密加盐
- Java/Android中的MD5加密加盐方法
- Java中MD5加密加盐算法
- MD5加盐。
- MD5加盐
- Python简单密码加密程序,加盐(salt)md5
- 工具类总结(3)-MD5 加盐加密工具类
- 加盐加密
- 加盐加密
- MD5加盐进行加密 以及更完全的加密方法HMAC+MD5的方式进行加密
- MD5加密技术
- 关于MD5加密技术
- Mybatis传参数的方式总结
- JAVA开发中的Model1和Model2模型
- redis配置
- nginx重启 failed (98: Address already in use)
- mysql中创建表删除表及表查询
- MD5加密技术(加盐)
- 数据库系统概念(机械工业出版社,第六版)复习——第十二章:事务管理
- javascript深入理解js闭包
- 棋盘覆盖问题(分治)
- 使用mybatis的一个坑
- 375. Guess Number Higher or Lower II
- iOS学习笔记-workspace添加工程时只有一个proj文件问题
- 一个屌丝程序猿的人生(五)
- AJAX 动态加载后台数据 绑定select