这篇文章主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中消息摘要来实现数据加密的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
MessageDigest
消息摘要类为应用程序提供信息摘要算法的功能,如讯息摘要5或恒星时角算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。
消息摘要对象开始被初始化。该对象通过使用更新方法处理数据。任何时候都可以调用重置方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用摘要方法之一完成哈希计算。
对于给定数量的更新数据,摘要方法只能被调用一次2008年文摘。被调用后,消息摘要对象被重新设置成其初始状态。
举个简单的讯息摘要5加密的例子:
包com.company
导入Java。安全。消息摘要;
导入Java。安全。nosuchalgorithm异常;
公共类MessageDigestTest {
公共静态void main(String[] args)引发NoSuchAlgorithmException {
字符串源=' 123123
string MD5 str=get MD5(源码);
系统。出去。println(MD 5 str);
}
/**
* 通过讯息摘要5进行加密
* @param源要加密的数据
* @返回
* @ throws算法异常
*/
私有静态字符串getMd5(字符串源)引发NoSuchAlgorithmException {
//1.获取消息摘要对象
消息摘要=消息摘要。getinstance(' MD5 ');
//2.执行加密操作
byte[]bytes=源。getbytes();
//在讯息摘要5算法这,得到的目标字节数组的特点:长度固定为16
byte[]目标字节=摘要。文摘(字节);
//3.声明字符数组
char [] characters=new char[]{'0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' A ',' B ',' C ',' D ',' E ',' F ' };
//4.遍历目标字节
StringBuilder builder=new StringBuilder();
对于(字节乙:目标字节){
//5.取出b的高四位的值
//先把高四位通过右移操作拽到低四位
int high=(B4)15;
//6.取出b的低四位的值
int low=b 15
//7.以高的为下标从特性中取出对应的十六进制字符
char high char=characters[高];
//8.以低的为下标从特性中取出对应的十六进制字符
char low char=characters[low];
builder.append(highChar).追加(低位字符);
}
返回建筑商。tostring();
}
}
测试结果:
4297 f44b 13955235245 b 2497399 d7a 93
封装成工具类:
包com.company
导入Java。安全。消息摘要;
导入Java。安全。nosuchalgorithm异常;
公共类MD5工具{
私有静态threadlocalm 5工具MD 5工具thread local=new thread local();
私有MD5Tool() {
}
/**
* 获取一个讯息摘要5工具实例
*/
公共静态MD5Tool getInstance() {
if(MD 5 toolthreadlocal。get()==null){
MD 5工具螺纹局部。set(新的MD 5工具());
}
返回MD 5工具线程本地。get();
}
/**
* 通过讯息摘要5进行加密
*
* @param源要加密的数据
* @返回
* @ throws算法异常
*/
公共字符串getMd5(字符串源)引发NoSuchAlgorithmException {
//1.获取消息摘要对象
消息摘要=消息摘要。getinstance(' MD5 ');
//2.执行加密操作
byte[]bytes=源。getbytes();
//在讯息摘要5算法这,得到的目标字节数组的特点:长度固定为16
byte[]目标字节=摘要。文摘(字节);
//3.声明字符数组
char[] characters=new char[]{'0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' A ',' B ',' C ',' D ',' E ',' F ' };
//4.遍历目标字节
StringBuilder builder=new StringBuilder();
对于(字节乙:目标字节){
//5.取出b的高四位的值
//先把高四位通过右移操作拽到低四位
int high=(B4)15;
//6.取出b的低四位的值
int low=b 15
//7.从下标高的字符中取出对应的十六进制字符。
char high char=characters[高];
//8.从下标低的字符中取出相应的十六进制字符。
char low char=characters[low];
builder.append(highChar)。append(low char);
}
返回builder . tostring();
}
}
关于在Java中用MessageDigest实现数据加密的方法,本文到此为止。有关MessageDigest数据加密的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。