MessageDigest简介
参考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html
MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDigest 对象通过使用 update
方法处理数据。任何时候都可以调用 reset
方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest
方法之一完成哈希计算并返回结果。
对于给定数量的更新数据,digest
方法只能被调用一次。digest
方法被调用后,MessageDigest 对象被重新设置成其初始状态。
MessageDigest 的实现可随意选择是否实现 Cloneable 接口。客户端应用程可以通过尝试复制和捕获 CloneNotSupportedException 测试可复制性:
MessageDigest md = MessageDigest.getInstance("SHA");
try {
md.update(toChapter1);
MessageDigest tc1 = md.clone();
byte[] toChapter1Digest = tc1.digest();
md.update(toChapter2);
...etc.
} catch (CloneNotSupportedException cnse) {
throw new DigestException("couldn't make digest of partial content");
}
注意1:即时给定MessageDigest的实现是不可复制的,则仍然能够通过getInstance方法实例化几个实例计算来同时进行摘要信息的计算。
注意2:由于历史原因,此类是抽象的,是从 MessageDigestSpi
扩展的。应用程序开发人员只应该注意在此 MessageDigest
类中定义的方法;超类中的所有方法是供希望提供自己的信息摘要算法实现的加密服务提供者使用的。
注意3:MessageDigest并不是单实例的。如下代码所示:
try
{
MessageDigest mdTemp1 = MessageDigest.getInstance("MD5");
MessageDigest mdTemp2= MessageDigest.getInstance("MD5");
MessageDigest mdTemp3= MessageDigest.getInstance("MD5");
System.out.println("mdTemp1==mdTemp2?:"+(mdTemp1==mdTemp2));
System.out.println("mdTemp2==mdTemp3?:"+(mdTemp2==mdTemp3));
} catch (NoSuchAlgorithmException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
运行结果
mdTemp1==mdTemp2?:false
mdTemp2==mdTemp3?:false
构造方法摘要 | |
---|---|
protected
|
MessageDigest(String algorithm) 创建具有指定算法名称的MessageDigest 实例对象。 |
方法摘要 | |
---|---|
Object
|
clone() 如果实现是可复制的,则返回一个副本。 |
byte[]
|
digest() 通过执行诸如填充之类的最终操作完成哈希计算。 |
byte[]
|
digest(byte[] input) 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算。 |
int
|
digest(byte[] buf, int offset, int len) 通过执行诸如填充之类的最终操作完成哈希计算。 |
String
|
getAlgorithm() 返回标识算法的独立于实现细节的字符串。 |
int
|
getDigestLength() 返回以字节为单位的摘要长度,如果提供程序不支持此操作并且实现是不可复制的,则返回 0。 |
static MessageDigest
|
getInstance(String algorithm) 生成实现指定摘要算法的 MessageDigest 对象。 |
static MessageDigest
|
getInstance(String algorithm, Provider provider) 生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。 |
static MessageDigest
|
getInstance(String algorithm, String provider) 生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。 |
Provider
|
getProvider() 返回此信息摘要对象的提供程序。 |
static boolean
|
isEqual(byte[] digesta, byte[] digestb) 比较两个摘要的相等性。 |
void
|
reset() 重置摘要以供再次使用。 |
String
|
toString() 返回此信息摘要对象的字符串表示形式。 |
void
|
update(byte input) 使用指定的字节更新摘要。 |
void
|
update(byte[] input) 使用指定的字节数组更新摘要。 |
void
|
update(byte[] input, int offset, int len) 使用指定的字节数组,从指定的偏移量开始更新摘要。 |
void
|
update(ByteBuffer input) 使用指定的 ByteBuffer 更新摘要。 |
public static MessageDigest getInstance(String algorithm)
public static MessageDigest getInstance(String algorithm, String provider);
public void update(byte[] input)
三、例子演示
MessageDigest m=MessageDigest.getInstance("MD5");
m.update(x.getBytes("UTF8" ));
byte s[ ]=m.digest( );
900150983cd24fb0d6963f7d28e17f72
3.4、示例三
转载于:https://www.cnblogs.com/sharpest/p/7604702.html
MessageDigest简介相关推荐
- 一点关于MD5计算的封装
本文参考:http://snowolf.iteye.com/blog/379860 MD5 是message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用 ...
- Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide
来自Java官方的文档,作备忘使用. 简介: Java平台非常强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制. JCA是平台的一个主要部分,包含一个"提供者&quo ...
- java cryptography_Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide...
来自Java官方的文档,作备忘使用. 简介: Java平台非常强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制. JCA是平台的一个主要部分,包含一个"提供者&quo ...
- MD5简介及其算法源码
MD5简介 (源码下载) (摘自百度http://baike.baidu.com/view/7636.htm) MD5的全称是Message-digest Algorithm 5(信息-摘要算法),在 ...
- RFC2459 Internet X.509 公钥基础设施:证书和CRL简介
组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook ...
- rfc2459:Internet X.509 公钥基础设施:证书和 CRL 简介
组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook ...
- [转]哈希分布与一致性哈希算法简介
哈希分布与一致性哈希算法简介 作者:liunx 来源:http://www.cnblogs.com/liunx/archive/2010/03/24/1693925.html 前言 在我们的日常web ...
- 网络安全简介(CA、SSL、TLS)
网络安全相关知识简介 在互联网环境中,你如何向别人证明:你就是你! 1.基本概念 1.1.数据加密 数据加密方式有很多,这里不介绍具体的加密算法及其技术细节,只是简单的介绍一下:对称加密与非对称加 ...
- unidbg 简介、基本使用、调用so中方法、unidbg-web
逆向调试时还是 IDA 的图形化界面更方便,一般首选 IDA 调试分析,后期要在生产线上生成 sign 字段,这时再用 unidbg 就更合适了! 1.调用 so 库中函数的一些方式 frida 的 ...
最新文章
- 备库中ORA-00600错误的简单修复
- 《Thinking in UML》读书笔记之一
- C语言实现基数排序Radix sort算法之一(附完整源码)
- 第01讲:必知必会,掌握 HTTP 基本原理
- Hadoop之MapReduce入门
- php mysql 条件查询语句_where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...
- android tcpdump log分析,android 系统启动过程中加入tcpdump和logcat
- mysqldump的几个主要选项探究
- flac3d命令流实例大全_Activiti6.0工作流引擎深度解析
- 【2】二级C语言中那些易错的概念题
- [转]OpenCV学习笔记大集锦
- 智能指针变量做函数参数的一个值得注意的地方
- 微服务实战(六):选择微服务部署策略 - DockOne.io
- sql select 0 字段 某字段是不在指定的表
- python while循环语句
- python循环嵌套例题_python练习题:循环打印嵌套列表
- 安装vs2017出现闪退现象_win7安装vs2017时闪退
- “去面试,你敢不填登记表吗?”“不敢”
- Proptech崛起,房地产产业数智化,成了2020年的新风口
- b temia 外骨骼机器人_纬创医学与加拿大B-Temia公司合作推出下肢外骨骼机器人...
热门文章
- javascript获取当前日期时间及其一些操作
- Opencv ORC——文字定位与切割
- 7-14 求整数段和 (15 分)
- 7-34 红色警报 (10 分)(结构体并查集)
- html5 摄像头 直播,详解HTML5 使用video标签实现选择摄像头功能
- 基于Mind+的NB-IOT自动获取时间和位置
- jquery学习记录
- [BZOJ]5018: [Snoi2017]英雄联盟 DP
- 【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp
- C# error CS1729: 'XXClass' does not contain a constructor that takes 0 arguments的解决方案