MD5 加密算法的使用
最近在看视频时,看到 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 加密算法的使用的更多相关文章
- 一起谈谈MD5加密算法
MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆:所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后 ...
- MD5加密算法
package com.bao.tools.encryption; import java.security.MessageDigest;import java.security.NoSuchAlgo ...
- md5加密算法c语言版
from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...
- MD5加密算法测试
在用户注册这一块,密码加密保证客户信息安全是最重要的,在网上查询了一些资料,发现加密算法比较流行的有MD5,DES和SHA. 虽然SHA与MD5通过碰撞法被破解了,但是MD5和SHA仍被公认是安全的加 ...
- 标准MD5加密算法
标准MD5加密算法: public class Md5 { public static String getMd5(String s) { char hexDigits[] = { '0', '1', ...
- MD5加密算法(java及js)
为了防止用户登陆过程中信息被拦截导致信息泄露,我们应该在客户端就对用户密码进行加密.浏览器提交给服务器的是加密后的信息,即使被恶意拦截,被拦截信息也已做了加密处理,现在比较安全的一种加密算法是MD5加 ...
- MD5加密算法的Java版本
网上搜索Java实现MD5的资料很多,错误的也很多. 之前编写的一个阿里云直播鉴权原理算法需要用到MD5算法,网上找了几个,都是不行,浪费了时间,现在贴一个,做备用. import java.secu ...
- JAVA实现MD5加密算法(使用MessageDigest)
http://blog.csdn.net/ymc0329/article/details/6738711 *********************************************** ...
- c++Builder XE6 MD5 加密算法 BASE64 URL 编码
xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...
- MD5加密算法原理及其应用
MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆:所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后 ...
随机推荐
- servlet cannot be resolved to a type解决办法
工程里的路径权限高,eclipse并到classpath里寻找jar位置. 项目名-->右键 Property-->选择 Build Path-->选择 Configure Buil ...
- C++(十一)— map的插入、查找、删除
标准库map类型是一种以键-值(key-value)存储的数据类型. map是STL的一个关联容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值 ...
- SpringTask定时任务实例讲解【Java获取微信公众平台accessToken及jsapiTicket】
项目中调用微信公众平台的接口时,因为获取到的accessToken及jsapiTicket有效时长只有两个小时,需要不断更新. 所以做了个定时任务,记录一下. .SpringTask实现有两种方式,一 ...
- 深入浅出Mybatis系列(九)---强大的动态SQL(转载)
原文出处:http://www.cnblogs.com/dongying/p/4092662.html 上篇文章<深入浅出Mybatis系列(八)---mapper映射文件配置之select.r ...
- KVM- vnc配置
本文是通过vnc方式访问虚拟主机上的KVM虚拟机. 这里的通过vnc方式访问虚拟机不是在kvm虚拟机安装配置vnc服务器,通过虚拟主机的IP地址与端口进行访问,kvm虚拟化对vnc的支持相对来说比xe ...
- 剑指offer--14.求1+2+3+...+n
&&短路原理 ------------------------------------------------------------------------------------- ...
- [转]JavaScript之数据类型
数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number和String.还有1种复杂数据类型——Object,Object本 ...
- docker registry 镜像删除
registry:2.5.0版本的镜像,将镜像默认存放在了/var/lib/registry 目录下 /var/lib/registry/docker/registry/v2/repositories ...
- Common 通用类库
/// <summary> /// 传入虚拟路径 返回全路径的html字符串 /// </summary> /// <param name="context&q ...
- JavaScript去除字符串两边空格trim
去除字符串左右两端的空格,在大部分编程语言中,比如PHP.vbscript里面可以轻松地使用 trim.ltrim 或 rtrim实现.但在js中却没有这3个内置方法,需要手工编写.下面的实现方法是用 ...