`
lxz891117
  • 浏览: 33250 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

MessageDigest、DigestInputStream、DigestOutputStream简介

 
阅读更多

MessageDigest

MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
MessageDigest 对象开始被初始化。该对象通过使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。
对于给定数量的更新数据,digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。 JDK6.0支持MD2/MD5/SHA-1(SHA)/SHA-256/SHA-384/SHA-512六种算法,名称不区分大小写。

DigestInputStream

使用读取流的方式完成摘要更新,调用on(boolean on)方法开启和关闭摘要功能。如果on(false),则DigestInputStream就变成了一般的输入流。默认摘要功能是开启的,如果开启了摘要功能,调用read方法时,将调用MessageDigest 类的update方法更新摘要。


DigestOutputStream

使用写入流的方式完成摘要更新,调用on(boolean on)方法开启和关闭摘要功能。如果on(false),则DigestOutputStream就变成了一般的输出流。默认摘要功能是开启的,如果开启了摘要功能,调用write方法时,将调用MessageDigest 类的update方法更新摘要。

示例

    public static void main(String[] args) throws Exception {
        byte[] bytes = "测试".getBytes();
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        messageDigest.update(bytes);

        MessageDigest messageDigest1 = MessageDigest.getInstance("MD5");
        DigestInputStream digestInputStream = new DigestInputStream(new ByteArrayInputStream(bytes), messageDigest1);
        digestInputStream.read(bytes, 0, bytes.length);
        System.out.println(MessageDigest.isEqual(messageDigest.digest(), digestInputStream.getMessageDigest().digest()));
        digestInputStream.close();

        MessageDigest messageDigest2 = MessageDigest.getInstance("MD5");
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        System.out.println(byteArrayOutputStream.toString());
        DigestOutputStream digestOutputStream = new DigestOutputStream(byteArrayOutputStream, messageDigest2);
        digestOutputStream.write(bytes, 0, bytes.length);
        digestOutputStream.getMessageDigest().digest();
        System.out.println(byteArrayOutputStream.toString());
        digestOutputStream.flush();
        digestOutputStream.close();
    }

输出
true

测试



分享到:
评论

相关推荐

    MessageDigest MD5加密

    #### 一、简介 在计算机科学领域中,消息摘要算法(Message Digest Algorithm)是一种用于创建固定长度数据摘要的哈希函数。这种摘要通常用于验证数据的完整性和一致性,例如在网络传输过程中确保数据未被篡改。MD5...

    Java MessageDigest 的 getInstance 方法:简介、详解、实例代码和运行结果

    Java中的`MessageDigest`类是安全编程领域的一个关键组件,主要用于计算数据的散列值,这些散列值通常用于验证数据完整性或加密敏感信息。`getInstance`方法是`MessageDigest`类的一个静态方法,它是获取特定加密...

    MessageDigest 内容/文件 摘要生成

    对文件以及内容获取MD5 Sha-1 SHA1_Digest 摘要信息,并可选进行base64编码, SHA1_Digest 为apk MANIFEST.MF 中信息的摘要方式 /** * 得到文件摘要信息 * * @Description: * @param file ...

    MessageDigest摘要计算

    MessageDigest md = MessageDigest.getInstance("SHA1"); String MsgtoDigest="renhl252,dajiahao adjjasasoasoasoadoadao" +"renhl252,dajiahao adjjasasoasoasoadoadao" +"renhl252,dajiahao ...

    Java MessageDigest:安全哈希函数及用法解析与示例

    ### Java MessageDigest:安全哈希函数及用法解析与示例 #### 一、引言 随着互联网技术的发展,信息安全成为越来越重要的议题。在众多安全技术中,**哈希算法**因其不可逆性和唯一性而被广泛应用于数据完整性校验...

    Java中MessageDigest来实现数据加密的方法

    Java中MessageDigest来实现数据加密的方法 Java中的MessageDigest类提供了信息摘要算法的功能,如MD5或SHA算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。MessageDigest对象...

    Java中的MessageDigest类及digest()方法详解与示例

    Java中的`MessageDigest`类是Java安全包(`java.security`)的一部分,它提供了计算消息摘要的能力。消息摘要是一种加密哈希函数,它将任意大小的数据转化为固定长度的输出,这个输出通常被称为哈希值或摘要。`...

    Java自带的加密类MessageDigest类代码示例

    Java中的`MessageDigest`类是用于实现信息摘要算法的一个核心组件,主要支持如MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm)系列的哈希算法。这些算法通常用于创建数据的唯一标识,确保数据的...

    javaMessageDigest md5算法详细实现

    public static String md5(String str) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes()); byte b[] = md.digest();

    大文件MD5加密方法

    digestInputStream = new DigestInputStream(fileInputStream, messageDigest); // read的过程中进行MD5处理,直到读完文件 byte[] buffer = new byte[bufferSize]; while (digestInputStream.read(buffer) > 0)...

    MD5_MessageDigest_java_md5_消息摘要_

    在Java中,我们可以使用`java.security.MessageDigest`类来实现MD5算法。 首先,我们需要了解`MessageDigest`类的基本用法。它是Java提供的一个核心类,用于计算各种消息摘要,包括MD5、SHA-1、SHA-256等。创建`...

    MessageDigestTest

    在Java编程语言中,`MessageDigest`类是用于计算消息摘要的重要工具,它属于`java.security`包。消息摘要是一种单向函数,可以将任意大小的数据转换为固定长度的输出,通常用于数据的完整性检查、文件校验和以及简单...

    java加密枝术.doc

    Java加密技术主要关注的是数据的安全性和隐私保护,其中`java.security`包中的`MessageDigest`类是用于实现消息摘要功能的关键。消息摘要是一种单向函数,它将任意长度的输入(也称为预映射或消息)转换为固定长度的...

    SHA-256 java加密代码

    关于信息摘要和散列码请参照《数字证书简介》 MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDigest 对象通过使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦...

    java自带的MessageDigest实现文本的md5加密算法

    在Java中,`java.security.MessageDigest` 类提供了对包括MD5在内的多种摘要算法的支持。 `MessageDigest` 类的使用方法如下: 1. 首先,需要通过 `getInstance` 方法获取一个特定算法的 `MessageDigest` 实例。在...

    使用JAVA代码实现MD5加密

    MessageDigest md = MessageDigest.getInstance("MD5"); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(md.digest(str.getBytes("utf-8"))); } catch (Exception e) { throw ...

    SHA-256加密算法JAVA

    在Java中实现SHA-256加密算法,可以使用内置的`java.security.MessageDigest`类。这个过程涉及到几个关键步骤,包括创建`MessageDigest`实例、更新输入数据和获取哈希值。 首先,我们需要导入必要的Java库: ```...

    sha1-md5 加解密代码

    SHA1和MD5是两种广泛使用的哈希函数,在IT领域,特别是网络安全和数据完整性验证方面发挥着重要作用。本文将深入探讨这两种加密算法的原理、应用以及C++实现的相关细节。 首先,MD5(Message-Digest Algorithm 5)...

    Java安全_黑马程序员训练营_张孝祥.pptx

    MessageDigest类用于计算摘要,而DigestInputStream和DigestOutputStream则提供了处理流数据的便捷方式。此外,MAC(消息验证码)结合了密钥和消息摘要,提供了一种验证数据完整性和发送者身份的方法。 数字签名是...

    java自己实现的MD5算法,没用到sun的MD5服务

    1. **初始化**:创建一个`MessageDigest`实例,但由于我们不使用`sun.misc`,可以使用`java.security.MessageDigest`类的静态方法`getInstance("MD5")`来获取MD5算法的实例。 2. **更新数据**:通过`update`方法...

Global site tag (gtag.js) - Google Analytics