代码如下,粘进去直接可以使用

 package com.study.utils;import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;public class MD5Utils {/*** byte[]字节数组 转换成 十六进制字符串* * @param arr 要转换的byte[]字节数组** @return  String 返回十六进制字符串*/private static String hex(byte[] arr) {StringBuffer sb = new StringBuffer();for (int i = 0; i < arr.length; ++i) {sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3));}return sb.toString();}/*** MD5加密,并把结果由字节数组转换成十六进制字符串* * @param str 要加密的内容* * @return String 返回加密后的十六进制字符串*/private static String md5Hex(String str) {try {MessageDigest md = MessageDigest.getInstance("MD5");byte[] digest = md.digest(str.getBytes());return hex(digest);} catch (Exception e) {e.printStackTrace();System.out.println(e.toString());return "";}}/*** 生成含有随机盐的密码** @param password 要加密的密码** @return String 含有随机盐的密码*/public static String getSaltMD5(String password) {// 生成一个16位的随机数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();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 String.valueOf(cs);}/*** 验证加盐后是否和原密码一致* * @param password 原密码* * @param password 加密之后的密码* *@return boolean true表示和原密码一致   false表示和原密码不一致*/public static boolean getSaltverifyMD5(String password, String md5str) {char[] cs1 = new char[32];char[] cs2 = new char[16];for (int i = 0; i < 48; i += 3) {cs1[i / 3 * 2] = md5str.charAt(i);cs1[i / 3 * 2 + 1] = md5str.charAt(i + 2);cs2[i / 3] = md5str.charAt(i + 1);}String Salt = new String(cs2);return md5Hex(password + Salt).equals(String.valueOf(cs1));}public static void main(String[] args) {// 原密码String plaintext = "123456";// 获取加盐后的MD5值String ciphertext = MD5Utils.getSaltMD5(plaintext);System.out.println("加盐后MD5:" + ciphertext);System.out.println("是否是同一字符串:" + MD5Utils.getSaltverifyMD5(plaintext, ciphertext));}}

JavaMD5工具类(加盐加密)相关推荐

  1. MD5工具类 加盐加密 及编码

    titls: MD5工具类加密 date: 2018/11/12 10:03:42 categories: 开发module import java.security.MessageDigest; i ...

  2. MD5加盐加密工具类(可直接使用)

    MD5加盐加密工具类 在我们做项目时,涉及到用户密码,而正常来说数据库中不会直接存储明文的密码,都是加密之后的密码. 密码加密的方式有很多,比如: ① 3DES.AES.DES:使用对称加密算法,可以 ...

  3. MD5加盐加密工具类

    直接使用MD5加密,能被解密网站破解,因此在加密的时候可以加个盐值.工具类如下: import org.apache.commons.codec.binary.Base64; import java. ...

  4. Shiro认证及加盐加密

    目录 今天的知识是与上次所分享的知识相关联的,在Shiro入门的基础进行编写,上次之前的数据是死数据(放在Shiro.ini)而这次是活数据,可以连接到数据库,运用域Relam知识.同时出于维护用户的 ...

  5. 密码MD5加盐加密----注册、校验、修改模块

    思路:     单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性. 此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证. 实现过程:      ...

  6. 基于java注册登录MD5算法加盐加密颁发 Token身份令牌使用各种邮箱发送验证码详解雪花算法

    目的作用 == 在项目中,为了防止别人窥视我们的密码通常我们会采取一些加密方式.这里简单介绍一下MD5 加盐加密方法,MD5叫做信息-摘要算法,严格来说不是加密方式,而是信息摘要. 对于可以接触到数据 ...

  7. 【SpringSSM项目】搏击俱乐部 使用邮箱进行登录注册 密码加盐加密

    在注册页面使用邮箱进行注册,注册后发送带有确认码的邮件到邮箱中,通过邮件确认注册 编写数据库 登录注册需要使用到用户表 table userinfo 包含 账号状态 用户名 邮箱 密码 头像 过期时间 ...

  8. Java:博客系统,实现加盐加密,分页,草稿箱,定时发布

    文章目录 1. 项目概述 2. 准备工作 2.1 数据库表格代码 2.2 前端代码 2.3 配置文件 3. 准备项目结构 3.1 拷贝前端模板 3.2 定义实体类 3.3 定义mapper接口和 xm ...

  9. Python项目-Day26-数据加密-hash加盐加密-token-jwt

    Python项目-Day26-数据加密-hash加盐加密-token-jwt 数据加密 import hashlibpwd='a123456' #sha1的参数必须是二进制 temp=hashlib. ...

最新文章

  1. 单片机涡轮流量传感器_暖通慧教你一文读懂流量传感器
  2. Windows内核新手上路1——挂钩SSDT
  3. 【人脸检测】学界 | 中科院自动化研究所提出 FaceBoxes:实时、高准确率的 CPU 面部检测器
  4. CDS – One Concept, Two Flavors
  5. Scratch第四十九讲:完美的下落和反弹
  6. caffe基础(7): 命令行解析
  7. 对接口编程:接口和抽象类
  8. 华为在中国建立其全球最大的网络安全透明中心
  9. C语言课后习题(33)
  10. 犯罪分子社工GoDaddy 员工,获得密币相关网站域名的控制权
  11. MariaDB -- 数据类型
  12. 【2016 ACM-ICPC 曼谷区域赛 Gym-101161 G】Binary Strings【矩阵快速幂】
  13. JSP个人博客网站设计与实现
  14. orangepi pc GPIO 管脚图
  15. 什么是WAF防火墙以及具体作用
  16. 脱贫攻坚“甜蜜行”基层医生培训班第二期在怀化举办,3市共50名村医参加
  17. mysql报错1357_mysql8 参考手册--错误代码1343-1367
  18. K210人脸识别+RFID录入信息
  19. 【图】广度与深度遍历
  20. iframe跨域消息传递

热门文章

  1. PTA大笨钟 c语言
  2. iMessage App 创建
  3. 8.利用通道差异抠取人物头发与玩具
  4. 淘宝API item_get_pro - 获得淘宝商品详情高级版
  5. 中国医疗废物处理行业发展前景及投资战略分析报告2022-2027年
  6. SwiftUI 代码速查之 06 设置SwiftUI backgroundColor的方法与foregroundColor相同
  7. 如何拥有(建)一个自己的网站-服务器建站
  8. 网站建设:实用型建站教程(有详细步骤哦)
  9. 访问控制列表--基于时间的ACL、动态ACL
  10. java抽象方法子类怎么调用,Java抽象类及子类方法的调用顺序