MessageDigest 类

MessageDigest 类
    MessageDigest 类是一个引擎类,它是为了提供诸如 SHA1 或 MD5 等密码上安全的报文摘要功能而设计的。密码上安全的报文摘要可接受任意大小的输入(一个字节数组),并产生固定大小的输出,该输出称为一个摘要或散列。摘要具有以下属性:
        无法通过计算找到两个散列成相同值的报文。
        摘要不反映任何与输入有关的内容。
    使用报文摘要可以生成数据唯一且可靠的标识符。有时它们被称为数据的“数字指纹”。
创建 MessageDigest 对象
        计算摘要的第一步是创建报文摘要实例。象所有的引擎类一样,获取某类报文摘要算法的 MessageDigest 对象的途径是调用 MessageDigest 类中的 getInstance 静态 factory 方法:
            public static MessageDigest getInstance(String algorithm)
        注意:算法名不区分大小写。例如,以下所有调用都是相等的:
            MessageDigest.getInstance("SHA")
            MessageDigest.getInstance("sha")
            MessageDigest.getInstance("sHa")
        调用程序可选择指定提供者名称,以保证所要求的算法是由已命名提供者实现的:
            public static MessageDigest getInstance(String algorithm, String provider)
        调用 getInstance 将返回已初始化过的报文摘要对象。因此,它不需要进一步的初始化。
更新报文摘要对象
        计算数据的摘要的第二步是向已初始化的报文摘要对象提供数据。这将通过一次或多次调用以下某个 update(更新)方法来完成:
            public void update(byte input)
            public void update(byte[] input)
            public void update(byte[] input, int offset, int len)
计算摘要
    通过调用 update 方法提供数据后,程序就调用以下某个 digest(摘要)方法来计算摘要:
        public byte[] digest()
        public byte[] digest(byte[] input)
        public int digest(byte[] buf, int offset, int len)
    前两个方法返回计算出的摘要。后一个方法把计算出的摘要储存在所提供的 buf 缓冲区中,起点是 offset。len 是 buf 中分配给该摘要的字节数。该方法返回实际存储在 buf 中的字节数。对接受输入字节数组变量的 digest 方法的调用等价于用指定的输入调用:public void update(byte[] input),接着调用不带参数的 digest 方法。

示例一
import java.security.MessageDigest;
public class Md5Util {
    private static MessageDigest md5 = null;
    static {
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    /**
     * 用于获取一个String的md5值
     * @param string
     * @return
     */
    public static String getMd5(String str) {
        byte[] bs = md5.digest(str.getBytes());
        StringBuilder sb = new StringBuilder(40);
        for(byte x:bs) {
            if((x & 0xff)>>4 == 0) {
                sb.append("0").append(Integer.toHexString(x & 0xff));
            } else {
                sb.append(Integer.toHexString(x & 0xff));
            }
        }
        return sb.toString();
    }
}

时间: 2024-10-23 22:30:11

MessageDigest 类的相关文章

Java 自带的加密类MessageDigest类(加密MD5和SHA)

Java 自带的数据加密类MessageDigest(MD5或SHA加密) 说明: 在网站中,为了保护网站会员的用户名和密码等隐私信息,所以我们在用户注册时就直接进行MD5方式或其他方式进行加密,   即使是数据库管理员也不能查看该会员的密码等信息,在数据库中查看密码效果如:8e830882f03b2cb84d1a657f346dd41a效果. 因为MD5算法是不可逆的,所以被很多网站广泛使用, 普遍使用的三种加密方式 方式一:使用位运算符,将加密后的数据转换成16进制 方式二:使用格式化方式,

Java 自带的加密类MessageDigest(加密MD5和SHA)

Java 自带的数据加密类MessageDigest(MD5或SHA加密) 说明:在网站中,为了保护网站会员的用户名和密码等隐私信息,所以我们在用户注册时就直接进行MD5方式或其他方式进行加密,  即使是数据库管理员也不能查看该会员的密码等信息,在数据库中查看密码效果如:8e830882f03b2cb84d1a657f346dd41a效果.  因为MD5算法是不可逆的,所以被很多网站广泛使用, 普遍使用的三种加密方式方式一:使用位运算符,将加密后的数据转换成16进制方式二:使用格式化方式,将加密

MessageDigest的功能及用法

MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值. MessageDigest 对象开始被初始化.该对象通过使用 update()方法处理数据.任何时候都可以调用 reset()方法重置摘要.一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一完成哈希计算. 对于给定数量的更新数据,digest 方法只能被调用一次.在调用 digest 之后,Message

MessageDigest、DigestInputStream、DigestOutputStream简介

MessageDigest MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值.     MessageDigest 对象开始被初始化.该对象通过使用 update 方法处理数据.任何时候都可以调用 reset 方法重置摘要.一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算.     对于给定数量的更新数据,digest 方法只能被调用一次.在调

Java利用MessageDigest提供的MD5算法加密字符串或文件

MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了解这些的话,可以去百度百科:MD5.SHA1.消息摘要算法. Java已经实现了MD5.SHA1算法.利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果. 1.字符串的MD5(下面的代码有详细注释) public static String s

JAVA 上加密算法的实现用例,MessageDigest介绍

第 1 章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密. 通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难.但是加密的安全性依靠密钥保管的安全性 , 在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并且如果在多用户的情况下密钥的保管安全性也是一个问题. 单钥密码体制的代表是美国的 DES 1.2. 消息摘要 一个消息摘要就是一个数据块的数字指纹.即对一个任意长度的一个数据块进行计

MessageDigest简介

本文博客原文 参考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html 一.概述 java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.简单点说就是用于生成散列码.信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值.关于信息摘要和散列码请参照<数字证书简介> MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化

JDK自带方法实现消息摘要运算

啊,有点小注释,懒得介绍了,就贴个代码吧,大意理解就可以了. 1 package jdbc.pro.lin; 2 3 import java.security.InvalidKeyException; 4 import java.security.MessageDigest; 5 import java.security.NoSuchAlgorithmException; 6 7 import javax.crypto.KeyGenerator; 8 import javax.crypto.Ma

JSSDK用法

参照微信官方文档,调试成功之后总结如下: 步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 步骤二:引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js 备注:支持使用 AMD/CMD 标准模块加载方法加载 步骤三:写代码 //初始化定义(在页面js里面) wx.config({ de