MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的。 Java JDK已经自带了MD5的实现,只要简单调用下就可以。(from 百度百科)

  1. import java.security.MessageDigest;
  2. import java.security.NoSuchAlgorithmException;
  3. public class CreateMD5 {
  4. //静态方法,便于作为工具类
  5. public static String getMd5(String plainText) {
  6. try {
  7. MessageDigest md = MessageDigest.getInstance("MD5");
  8. md.update(plainText.getBytes());
  9. byte b[] = md.digest();
  10. int i;
  11. StringBuffer buf = new StringBuffer("");
  12. for (int offset = 0; offset < b.length; offset++) {
  13. i = b[offset];
  14. if (i < 0)
  15. i += 256;
  16. if (i < 16)
  17. buf.append("0");
  18. buf.append(Integer.toHexString(i));
  19. }
  20. //32位加密
  21. return buf.toString();
  22. // 16位的加密
  23. //return buf.toString().substring(8, 24);
  24. } catch (NoSuchAlgorithmException e) {
  25. e.printStackTrace();
  26. return null;
  27. }
  28. }
  29. public static void main(String[] args) {
  30. //测试
  31. System.out.println(CreateMD5.getMd5("hello"));
  32. }
  33. }

package test.md5;

import java.security.MessageDigest;

public class MD5Util {
    public final static String MD5(String s) {
        char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

try {
            byte[] btInput = s.getBytes();
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.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 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

public static void main(String[] args) {
        System.out.println(MD5Util.MD5("20121221"));
        System.out.println(MD5Util.MD5("加密"));
    }
}

http://www.iteye.com/topic/1127319

方法一、 运行下列命令import java.security.MessageDigest;public class Test_MD5{public final static String MD5(String s) {char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };try {byte[] strTemp = s.getBytes();//使用MD5创建MessageDigest对象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 b = md[i];//System.out.println((int)b);//将没个数(int)b进行双字节加密str[k++] = hexDigits[b >> 4 & 0xf];str[k++] = hexDigits[b & 0xf];}return new String(str);} catch (Exception e) {return null;}}//测试public static void main(String[] args) {System.out.println("caidao的MD5加密后:\n"+Test_MD5.MD5("caidao"));System.out.println(""));}}
2
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字****应用。MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。MD5理论上是一种单向的哈希散列,一些黑客破获这种密码的方法是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)....+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。
3
方法二、import java.security.spec.*;class MD5_test {public final static String MD5(String s) {char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };try {byte[] strTemp = s.getBytes();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 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);} catch (Exception e) {return null;}}public static void main(String[] args) {// MD5_Test aa = new MD5_Test();System.out.print(MD5_test.MD5("b"));}}加密,解密import java.security.MessageDigest;public class MD5andKL {// MD5加码。32位public static String MD5(String inStr) {MessageDigest md5 = null;try {md5 = MessageDigest.getInstance("MD5");} catch (Exception e) {System.out.println(e.toString());e.printStackTrace();return "";}char[] charArray = inStr.toCharArray();byte[] byteArray = new byte[charArray.length];for (int i = 0; i < charArray.length; i++)byteArray[i] = (byte) charArray[i];byte[] md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++) {int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val));}return hexValue.toString();}// 可逆的加密算法public static String KL(String inStr) {// String s = new String(inStr);char[] a = inStr.toCharArray();for (int i = 0; i < a.length; i++) {a[i] = (char) (a[i] ^ 't');}String s = new String(a);return s;}// 加密后解密public static String JM(String inStr) {char[] a = inStr.toCharArray();for (int i = 0; i < a.length; i++) {a[i] = (char) (a[i] ^ 't');}String k = new String(a);return k;}// 测试主函数public static void main(String args[]) {String s = new String("a");System.out.println("原始:" + s);System.out.println("MD5后:" + MD5(s));System.out.println("MD5后再加密:" + KL(MD5(s)));System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));}}
4
方法三、
package endecrypt;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/*** 采用MD5加密解密* @author tfq* @datetime 2011-10-13*/public class MD5Util {/**** MD5加码 生成32位md5码*/public static String string2MD5(String inStr){MessageDigest md5 = null;try{md5 = MessageDigest.getInstance("MD5");}catch (Exception e){System.out.println(e.toString());e.printStackTrace();return "";}char[] charArray = inStr.toCharArray();byte[] byteArray = new byte[charArray.length];for (int i = 0; i < charArray.length; i++)byteArray[i] = (byte) charArray[i];byte[] md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++){int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val));}return hexValue.toString();}/*** 加密解密算法 执行一次加密,两次解密*/public static String convertMD5(String inStr){char[] a = inStr.toCharArray();for (int i = 0; i < a.length; i++){a[i] = (char) (a[i] ^ 't');}String s = new String(a);return s;}// 测试主函数public static void main(String args[]) {String s = new String("tangfuqiang");System.out.println("原始:" + s);System.out.println("MD5后:" + string2MD5(s));System.out.println("加密的:" + convertMD5(s));System.out.println("解密的:" + convertMD5(convertMD5(s)));}}

利用Java自带的MD5加密java.security.MessageDigest;相关推荐

  1. java自带的md5加密_JDK自带MD5加密算法

    [     在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算 其实jdk就自带了md5加密算 ...

  2. sha256---利用java自带的实现加密

    利用java自带的实现加密:参考https://jingyan.baidu.com/article/2fb0ba40a2ef2b00f3ec5f74.html /*** 利用java原生的摘要实现SH ...

  3. php md5加密 java代码_Java实现MD5加密及解密的代码实例分享

    基础:MessageDigest类的使用 其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣:/** * 对字符串md5加密 * * @param str ...

  4. java面试带电脑吗?java面试要准备什么?

    最近面试java开发的朋友有点多哦,前段时间有个老弟面试对方要去他带电脑,他不知道是为什么.那么java面试带电脑吗?java面试要准备什么?今天来谈谈这个问题. java面试带电脑吗? 面试要求带电 ...

  5. java 赋值md5_Hook Java API以获得MD5加密前数据

    Java实现MD5加密 在Java中,我们用MD5对数据进行加密,代码大概是这样的: import java.security.MessageDigest; import java.security. ...

  6. MD5加密 java实现

    Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护. MD5即Message-Digest Alg ...

  7. md5碰撞Java_2 MD5加密 java实现

    百度百科对MD5的说明是: Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护. MD5即Mess ...

  8. MD5加密-Java版(可直接使用)

    package util; import java.security.MessageDigest; public class Encript { //十六进制下数字到字符的映射数组 private f ...

  9. MD5加密Java工具类

    原文:http://www.open-open.com/code/view/1421764946296 import java.security.MessageDigest; public class ...

最新文章

  1. Hyper-V 3.0功能部署PART 5:秒级实时迁移
  2. 从「林」开始: imx51-linux-rt3070ap-dhcpd
  3. 一起学react day1
  4. [爬虫][python][入门][网页源码][百度图片][豆瓣TOP250]
  5. windows中架设基于Apache的svn服务器
  6. json 插入数据_Power BI数据回写SQL Server(2)——存储过程一步到位
  7. git 小乌龟 配置_Git-Bash和TortoiseGit小乌龟客户端配置记录
  8. 项目成功的关键是在投资最少的时候找出错误
  9. java 生成复杂的word_Java 动态生成复杂 Word
  10. ElementUI文档中忽略的内容补充
  11. python main函数
  12. redis 验证订单_php+redis消息队列实现抢购功能
  13. 【离散数学】数理逻辑 第一章 命题逻辑(1) 命题和联结词
  14. 【路径规划】基于粒子群算法实现机器人栅格地图路径规划matlab源码
  15. 攻击局域网计算机,局域网攻击,网络攻击知识之几种IP地址攻击方式
  16. 静态工作点稳定方法——原理;分压偏置共射放大电路静态分析、动态分析
  17. 关于安卓开发的一些你必须要掌握的网络知识(一):网络基础与网络框架OkHttp
  18. 【雕爷学编程】Arduino动手做(69)---GY-30环境光传感器
  19. 图片和字符串相互转换
  20. ZFS case : top CPU 100%sy, when no free memory trigger it.

热门文章

  1. java中abstract关键字
  2. word2vec损失函数的数学推导和近似训练以及doc2vec的实战掉包应用
  3. C#调用Win32 的API函数--User32.dll
  4. HTML(WEB)开发day01
  5. 邓西百度网盘多帐号文件一键搜索工具
  6. Win7如何改变用户文件夹位置
  7. 双人五子棋对战(需要EasyX图像库)
  8. 企业网站推广方案详解
  9. 如何完全卸载Java
  10. 数据科学和机器学习中使用的最多的20个R语言包