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();
    }
}

MessageDigest 类的更多相关文章

  1. MessageDigest类

    public abstract class MessageDigest extends MessageDigestSpi API中的中英文对照简介(未完) java.security.MessageD ...

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

    Java 自带的加密类MessageDigest类(加密MD5和SHA) - X-rapido的专栏 - CSDN博客 https://blog.csdn.net/xiaokui_wingfly/ar ...

  3. 【转】java MessageDigest类的作用 :提供信息摘要 算法( MD5 或 SHA 等)的功能

    一.结构和概述: java.lang.Object java.security.MessageDigestSpi java.security.MessageDigest 声明:public abstr ...

  4. MessageDigest类实现md5加密

    项目中用到的md5工具类: package com.mall.util; import org.springframework.util.StringUtils; import java.securi ...

  5. JAVA 中的MessageDigest类和Mac类的使用

    MessageDigest 消息摘要 例子: MD5加密: try{ MessageDigest md5 = MessageDigest.getInstance("MD5"); m ...

  6. MessageDigest类提供MD5或SHA等加密算法

    MessageDigest可使用的加密方法有MD2\MD5\SHA-1\SHA-256\SHA-384\SHA-512,使用时候只替换相应参数值即可 MessageDigest md5 = Messa ...

  7. MessageDigest消息摘要

    <1>MessageDigest基础 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法. MessageDigest 对象开始被初始化.该对象通 ...

  8. MessageDigest简介

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

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

    MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了 ...

随机推荐

  1. xp sp3安装 iis5.1

    1.依次打开左下角的 "开始" 菜单----控制面板----选择 "添加/删除程序", 点击窗体左侧 "添加/删除Windows组件"(A) ...

  2. Swift--基础(二)元组 断言 错误处理

    元组(tuples) 把多个值组合成一个复合值.元组内的值可以是任意类型,并不要求是相同类型 let http404Error = (404, "Not Found") let ( ...

  3. YUI 之getLocation

    关于Y.getLocation的简介是 Returns the `location` object from the window/frame in which this YUI instance o ...

  4. django 自定用户系统 以及 Django Model 定义语法

    http://www.tuicool.com/articles/jMzIr2 django使用自己的用户系统 http://www.jianshu.com/p/c10be59aad7a Django ...

  5. 自己写的简单的jQuery分页控件

    因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...

  6. ECSTORE1.2 重启开启信任登陆模块(删除KEY)

    1).若启用Mongodb 需要删除KEY分别为 1 2 3 be90a668d9f2eb1950bae1bf6b0835ce 939e64939c3f65cfb646e7948c5b80df 58d ...

  7. 很强的PHP图片处理类

    /*** 基本图片处理,用于完成图片缩入,水印添加* 当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小* 水印图可以设置跟背景的合并度** Copyright(c) 2005 by ustb ...

  8. R语言学习网站

    一个不错的个人R语言博客网站 http://blog.fens.me/r-overview/

  9. SPI协议总结

    四种工作模式: Mode 0 CPOL=0, CPHA=0 Mode 1 CPOL=0, CPHA=1Mode 2 CPOL=1, CPHA=0 Mode 3 CPOL=1, CPHA=1 常使用Mo ...

  10. Spark问题记录

    Spark 多线程时的序列化问题  临时记录 Exception in thread "Thread-28" org.apache.spark.SparkException: Ta ...