最近在看视频时,看到 MD5 的加密算法,感觉其在某些重要信息中,还是很好的解决了一些安全问题的。于是,就在自己理解的情况下,实现了 MD5 算法。

  具体的流程大致是:

  (1)将指定的数据首先通过 MessageDigest 类转为 MD5 的表现形式

  (2)将 MD5 表现形式的数据,将其每个字节,转为 16 进制的表示方法

具体的实现方式如下:

/**
* 0.0.0.1
*/
package com.test.common; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import org.apache.log4j.Logger; /**
* MD5加密测试
* @author 高青
* 2014-4-21
*/
public class MD5Security { /** 日志对象 */
private static Logger log = Logger.getLogger(MD5Security.class); /** 十六进制数组 */
private static char[] hexArr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /**
* 构造方法
*/
public MD5Security() {
// TODO Auto-generated constructor stub
} /**
* 主线程方法
* @author 高青
* 2014-4-21
* @param args 字符串参数集
* @return 空
*/
public static void main(String[] args) {
//加密的信息
String securityInfo = "a"; try {
//通过 JAVA 的 Security 包,得到 MD5 表示方式 的字节数组
MessageDigest instance = MessageDigest.getInstance("MD5"); //此字节数据是 128 位的长整数,即是 16 个字节表示的数据
byte[] digest = instance.digest(securityInfo.getBytes()); //转换为 16 进制后的字节数组
char[] hexByte = new char[16*2];
//记录 当前计算后的字节在 十六进制字节数组中的位置
int k = 0; //循环遍历 MD5 中的每个字节,并将每个字节改成对应的 16 进制进行表示
for (int i = 0; i < 16; i++) { //计算当前字节的高四位所对应的十六进制数
hexByte[k++] = hexArr[digest[i] >>> 4 & 0xf]; //计算当前字节的低四位所对应的十六进制数
hexByte[k++] = hexArr[digest[i] & 0xf];
}
//将转化后的字符数组转为 String 类型
String hexString = new String(hexByte);
System.out.println(hexString); } catch (NoSuchAlgorithmException e) {
log.info("实例化 MessageDigest 对象异常!");
e.printStackTrace();
}
}
}

 加密后的结果为:0cc175b9c0f1b6a831c399e269772661

MD5 加密算法的使用的更多相关文章

  1. 一起谈谈MD5加密算法

    MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆:所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后 ...

  2. MD5加密算法

    package com.bao.tools.encryption; import java.security.MessageDigest;import java.security.NoSuchAlgo ...

  3. md5加密算法c语言版

    from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...

  4. MD5加密算法测试

    在用户注册这一块,密码加密保证客户信息安全是最重要的,在网上查询了一些资料,发现加密算法比较流行的有MD5,DES和SHA. 虽然SHA与MD5通过碰撞法被破解了,但是MD5和SHA仍被公认是安全的加 ...

  5. 标准MD5加密算法

    标准MD5加密算法: public class Md5 { public static String getMd5(String s) { char hexDigits[] = { '0', '1', ...

  6. MD5加密算法(java及js)

    为了防止用户登陆过程中信息被拦截导致信息泄露,我们应该在客户端就对用户密码进行加密.浏览器提交给服务器的是加密后的信息,即使被恶意拦截,被拦截信息也已做了加密处理,现在比较安全的一种加密算法是MD5加 ...

  7. MD5加密算法的Java版本

    网上搜索Java实现MD5的资料很多,错误的也很多. 之前编写的一个阿里云直播鉴权原理算法需要用到MD5算法,网上找了几个,都是不行,浪费了时间,现在贴一个,做备用. import java.secu ...

  8. JAVA实现MD5加密算法(使用MessageDigest)

    http://blog.csdn.net/ymc0329/article/details/6738711 *********************************************** ...

  9. c++Builder XE6 MD5 加密算法 BASE64 URL 编码

    xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...

  10. MD5加密算法原理及其应用

    MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆:所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后 ...

随机推荐

  1. SQL 存在一个表而不在另一个表中的数据

    原文链接:http://blog.csdn.net/windren06/article/details/8188136 (转)A.B两表,找出ID字段中,存在A表,但是不存在B表的数据.A表总共13w ...

  2. 解决:return _compile(pattern, flags).search(string) TypeError: expected string or buffer

    今天写爬虫,爬取MM图片页面的标题时,遇到了一个问题,上图: 看看我的代码: import urllib import urllib2 import re class JPMSG: def __ini ...

  3. vue项目打包注意的地方

    打包有两种方式: 第一种方式:1.更改config文件夹下prod.env.js下的地址: 2.将config文件夹下index.js中build下改为 assetsPublicPath: '', 第 ...

  4. Webstorm设置Node.js智能提示

    这两天在学习Node.js,在Webstorm上进行编辑时发现竟然没有智能提示!所以写这篇文章来帮助大家度过这个坑! File -> Settings -> Languages&F ...

  5. (转) Android Fragment完全解析,关于碎片你所需知道的一切

    我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activity也有它的局限性,同样的界面在手机 ...

  6. LeetCode OJ:Path Sum(路径之和)

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  7. java-04类和对象课堂练习

    1.请运行并输入以下代码,得到什么结果 public class Test { public static void main(String[] args){ Foo obj1=new Foo(); ...

  8. UFLDL新版教程

    http://ufldl.stanford.edu/tutorial/ 还带编程作业.

  9. 《hadoop权威指南》关于hive的第一个小例子的演示

    本文是<hadoop权威指南>关于hive的小例子,通过这个例子可以很好地看出来hive是个什么东西. 前提是已经配置好hive的远程连接版本的环境,我是用了MYSQL数据库保存元数据. ...

  10. hdu 2899 Strange fuction——模拟退火

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 还可三分.不过只写了模拟退火. #include<iostream> #include& ...