MD5加密,比如数据库中密码等敏感字段需要加密存储,核对密码时先以同样的方式对用户输入的密码进行加密,再与数据库中存储的密码比较。

MD5加密有很多种实现方式,此处介绍2种。

1、使用JDK自带MessageDigest

public class MD5Util {public static String getMD5Str(String str) {byte[] digest = null;
try {MessageDigest md5 = MessageDigest.getInstance("md5");
digest = md5.digest(str.getBytes("utf-8"));
} catch (NoSuchAlgorithmException e) {e.printStackTrace();
} catch (UnsupportedEncodingException e) {e.printStackTrace();
}
//16是表示转换为16进制数
String md5Str = new BigInteger(1, digest).toString(16);
return md5Str;
}}

2、使用Spring自带的DigestUtils
上面试自己封装,太麻烦,Spring已经给我们封装好了。

String md5Str = DigestUtils.md5DigestAsHex(“原串”.getBytes());
效果都是一样的。

说明
只使用md5加密是不行的,很容易被破解。常见的做法有:

先对原串进行一些处理,比如先给它拼接一个字符串常量,再进行md5加密。即使对方解密,也获取不到原串。
使用多种加密算法。比如先用md5加密,再对加密的结果使用其它加密算法进行加密。比如现使用md5加密,对加密的结果再次使用md5加密。
这2种方式方式经常一起使用。

java MD5加密的两种方法总结相关推荐

  1. .NET生成常用16、32位MD5加密的两种方法

    //MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...

  2. MD5加密的两种方法

    一.加密后的密文中英文字母为大写 /*** 加签* @param plain 原串* @param charset 字符集编码* @return*/public static String sign( ...

  3. [转]DES加密 java与.net可以相互加密解密两种方法

    [转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...

  4. java创建数组的两种方法

    java创建数组的两种方法 1,静态初始化 int[] array={1,2,3,4,5}; 2,动态初始化 1)先分配空间再给数组元素赋值 int[] array=new int[10]; //需指 ...

  5. java数组去重方法是,java数组去重的两种方法

    我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...

  6. Java匹配qq号两种方法(1、长度为5~10位。2、不能以0开头。3、纯数字组成)

    Java匹配qq号两种方法 package com.oneProject; import java.util.Scanner; /** 题目: 匹配qq号(1.长度为5~10位.2.不能以0开头.3. ...

  7. Java代码实现MD5加密的两种方式

    MD5的全称是Message-Digest Algorithm 5 (信息-摘要算法),在90年代初,由MIT Laboratory for Computer Scientce 和RSA Data S ...

  8. java创建线程的两种方法区别

    在Java中创建一个线程有两种方法:继承Thread类和实现Runnable接口. 下面通过两个例子来分析两者的区别: 1)继承Thread类 public class TestThread exte ...

  9. java创建线程的两种方法是_java创建线程的两种方法

    要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 哪种方法 ...

最新文章

  1. MySQL 随笔记录
  2. 【 2013华为杯编程大赛成都第三组前两题试题及答案】
  3. PHP笔记-用户登录权限拦截说明
  4. Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务
  5. 1200 美元创业成硅谷首富,甲骨文创始人埃里森传
  6. XCodeGhost 病毒检查方法
  7. Java安全生态-Java加解密API详解-Java安全框架官方文档翻译:对称/非对称加密、数字签名、数字证书、安全通信、密钥库等
  8. 【第十届泰迪杯B题电力负荷预测代码】
  9. 从无到有构建计算机网络
  10. thinkpad重装系统不引导_thinkpad系统重装教程
  11. LiveZilla 详细 配置 设置 (二) 安装 LiveZilla
  12. 二值化网络的发展——从原始BNN到MeliusNet
  13. win10打不开图片,文件系统错误 (-2147219196)修复的方法
  14. 纸箱制作机器人邮箱_纸箱机器人衣服制作方法
  15. VLC全部参数,libvlc_new函数参数,VLC SDK开发
  16. 五种蓝牙耳机,到底谁才是你的菜
  17. 客户需要生成中文拼音代码,分享PHP生成代码
  18. 万物互联时代的操作系统报告 附下载地址
  19. 说说我在家乡山东日照的面试经历以及对家乡互联网产业的一些认识吧
  20. Netty入门 -- 什么是Netty?

热门文章

  1. 帮我用python编写每小时在新浪财经网获取股票小时数据的程序
  2. 吉卜力风格水彩画怎么画?
  3. 文件压缩、解压 (ZipTool.exe)
  4. 贪吃蛇java版_java贪吃蛇极速版
  5. IDEA创建springboot、maven一个项目
  6. Solidworks渲染技巧如何不显示边线--显示样式设定
  7. koa mysql_使用koa+mysql实现一个完整的项目
  8. 808协议服务器下发,基于部标JT/T 808协议及数据格式的GPS服务器
  9. 编写10个线程,第一个线程从1加到10...
  10. 为「IT女神勋章」而战