MessageDigest用法

MessageDigest用法为什么要使用MessageDigest?某些金融行业用于进行简单的密码加密。例如:需求某银行对数据库账户取款密码加密。为了保护客户信息的安全,客户取款密码只能客户自己知道,银行方面对此加密,加密后数据保存的数据库。此时可以用MessageDigest进行加密,以及后续其他方案再次加密。MessageDigest是什么?java.security.MessageDigest类…

大家好,又见面了,我是你们的朋友全栈君。

为什么要使用MessageDigest?

某些金融行业用于进行简单的密码加密。例如:需求某银行对数据库账户取款密码加密。为了保护客户信息的安全,客户取款密码只能客户自己知道,银行方面对此加密,加密后数据保存的数据库。此时可以用MessageDigest进行加密,以及后续其他方案再次加密。

MessageDigest 是什么?

java.security.MessageDigest类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA-1或SHA-256 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。

MessageDigest 对象调用getInstance初始化,使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。

对于给定数量的更新数据,digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。

  • This MessageDigest class provides applications the functionality of a message digest algorithm, such as SHA-1 or SHA-256. Message digests are secure one-way hash functions that take arbitrary-sized data and output a fixed-length hash value.

    A MessageDigest object starts out initialized. The data is processed through it using the update methods. At any point reset can be called to reset the digest. Once all the data to be updated has been updated, one of the digest methods should be called to complete the hash computation.

    The digest method can be called once for a given number of updates. After digest has been called, the MessageDigest object is reset to its initialized state.

代码展示:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MessageDigestDemo extends Thread {
private static final char[] ch = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

public static void run(String str) {
byte[] data = null;
MessageDigest md;
try {
data = str.getBytes("UTF8");
//初始化对象
md = MessageDigest.getInstance("MD5");
//传送要计算的数据更新操作
md.update(data);
//计算的数据生成加密数据
byte[] resultData = md.digest();
//测试查看输出
System.out.println(bytes2HexStr(resultData));
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

static String bytes2HexStr(byte[] paramArrayOfByte) {
StringBuffer localStringBuffer = new StringBuffer(paramArrayOfByte.length * 2);
for (int i = 0; i < paramArrayOfByte.length; i++)
{
localStringBuffer.append(ch[(paramArrayOfByte[i] >>> 4 & 0xF)]);
localStringBuffer.append(ch[(paramArrayOfByte[i] & 0xF)]);
}
return localStringBuffer.toString();
}

public static void main(String[] args) {
String text = "loveuu";
run(text);
}
}

测试输出:

c591f3416f45f8146de0839266594731

总结:

使用中大多用工具类进行封装,使用时直接调用run(String str)方法,用来传递所要加密的字符串。

更多MessageDigest 方法使用详见JDK文档。

刚开始写技术文章,许多问题不完善,敬请指导!

PS:
参考JDK_API文档
参考http://blog.sina.com.cn/s/blog_4f36423201000c1e.html文章


转载于:https://www.cnblogs.com/JackXv/p/9371543.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157776.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 读写txt文件乱码问题

    从报错讲起:UnicodeDecodeError:’gbk’codeccan’tdecodebyte0xaainposition2:illegalmultibytesequence出现这个错误一般是由于打开文件时,没有指定编码引起的,比如下面代码withopen(‘../corpus.txt’,mode=’r’)asf:解决方法很简单,为其指定…

    2022年4月8日
    205
  • mysql自定义函数详解_mysqlinterval函数

    mysql自定义函数详解_mysqlinterval函数个人博客原文链接更多文章欢迎访问个人博客站点建定义函数的的基本语法如下–DELIMITER是用来设置边界符的DELIMITER//CREATEFUNCTION函数名(形参列表)RETURNS返回类型begin–函数体RETURNEND//DELIMITER;创建日期时间格式化函数DROPFUNCTIONIFEXISTS`FORMAT_DATE_TIME`;CREATE…

    2022年9月7日
    0
  • Python设置环境变量

    Python设置环境变量文章目录一、我们安装Python。二、设置环境变量。1、找到计算机属性。2、设置PATH。一、我们安装Python。点击链接下载:python下载你也可以无脑安装,对计算机的影响不打,不过建议别无脑我们选择自己安装,然后选择想要安装的目录,不然我们能看见在InstallNow下面有一个目录那个就是默认的安装C盘位置,当然若你觉得这样好找python也可以直接点第一个安装这里如果看不懂可以不管,也可以根据自我需求来点,可以用微信的拍照翻译二、设置环境变量。1、找到计算机属性。我们右击桌

    2022年10月22日
    0
  • 这2个PDF转Word免费不限页数工具很多人没用过

    这2个PDF转Word免费不限页数工具很多人没用过很多人在搜索下载过PDF转换器的小伙伴都会有一个灵魂拷问:难道就没有免费还没页数限制的PDF转Word的工具吗?小编经过不断的对比和试用,找到以下两款好用免费的工具,相信总有一个你能用上。一、PDF转换器相信了解PDF这种文档格式设计由来的人对于Adobe肯定不陌生,所以首先要说的PDF转换工具就是AdobePDF,下载安装后打开软件,直接将PDF拖到软件页面打开即可,然后点击左上角“文件”中的“另存为其他”,选择我们需要转换成的Word格式就可以了。或者点击右侧“工具”选项中的“将文件导出为”并

    2022年4月27日
    94
  • vue 创建新项目

    vue 创建新项目1 vue 依赖于 npm 和 node 有因为 npm 依赖于 node 所以在新建项目前先安装好 node 也可以安装 nvm 后续方便切换 node 版本 打开 cmd 窗口 输出 node v 看看有无安装成功 有显示指定版本说明 node 安装成功 2 安装脚手架 vue cli 输入命令 npminstall g vue cli 接着用命令 vueversion 查看是否安装成功 3 新建项目 命令 vuecreate 项目名 4 创建成功 按照提示进入 vscode 切换到指定文件夹 执行 npmruns

    2025年7月3日
    1
  • db2codepage作用_dbcc checktable

    db2codepage作用_dbcc checktable1、db2变量查看  db2set-all  (connecttodbanme)getdbcfg  db2pd-osinfo这个命令很强大哦  2、db2c变量的设置用命令  db2set变量=value  可以参考一下:  客户端:  db2codepage=1386(简体中文)  db2country

    2022年9月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号