`

MessageDigest的功能及用法

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

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

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

1、public static MessageDigest getInstance(String algorithm)
                                 throws NoSuchAlgorithmException

   返回实现指定摘要算法的 MessageDigest 对象。

   algorithm - 所请求算法的名称

2、public static MessageDigest getInstance(String algorithm,
                                        String provider)
                                 throws NoSuchAlgorithmException,
                                        NoSuchProviderException

  返回实现指定摘要算法的 MessageDigest 对象。

  algorithm - 所请求算法的名称

  provider - 提供者的名称。

3、public void update(byte[] input)

  使用指定的 byte 数组更新摘要。

4、public byte[] digest()

  通过执行诸如填充之类的最终操作完成哈希计算。在调用此方法之后,摘要被重置。

5、public static boolean isEqual(byte[] digesta,
                              byte[] digestb)

    比较两个摘要的相等性。做简单的字节比较。





注意:Provider可以通过 java.security.Security.getProviders() 方法获取已注册提供者列表。比较常用的有“SUN”

SUN提供的常用的算法名称有:MD2
MD5
                        SHA-1
                        SHA-256
                        SHA-384
                        SHA-512



Code举例:

import java.security.*;
public class myDigest {
  public static void main(String[] args)  {
    myDigest my=new myDigest();
    my.testDigest();
  }
  public void testDigest()
  {
   try {
     String myinfo="我的测试信息";
    //java.security.MessageDigest alg=java.security.MessageDigest.getInstance("MD5");
      java.security.MessageDigest alga=java.security.MessageDigest.getInstance("SHA-1");
      alga.update(myinfo.getBytes());
      byte[] digesta=alga.digest();
      System.out.println("本信息摘要是:"+byte2hex(digesta));
      //通过某中方式传给其他人你的信息(myinfo)和摘要(digesta) 对方可以判断是否更改或传输正常
      java.security.MessageDigest algb=java.security.MessageDigest.getInstance("SHA-1");
      algb.update(myinfo.getBytes());
      if (algb.isEqual(digesta,algb.digest())) {
         System.out.println("信息检查正常");
       }
       else
        {
          System.out.println("摘要不相同");
         }
   }
   catch (java.security.NoSuchAlgorithmException ex) {
     System.out.println("非法摘要算法");
   }
  }
  public String byte2hex(byte[] b) //二行制转字符串
    {
     String hs="";
     String stmp="";
     for (int n=0;n<b.length;n++)
      {
       stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
       if (stmp.length()==1) hs=hs+"0"+stmp;
       else hs=hs+stmp;
       if (n<b.length-1)  hs=hs+":";
      }
     return hs.toUpperCase();
    }
}



关于Java加密的更多信息:http://www.ibm.com/developerworks/cn/java/l-security/
分享到:
评论

相关推荐

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

    本文中,我们简要介绍了Java MessageDigest类,并提供了一个使用SHA-256算法计算哈希值...通过本文的学习,读者应该能够理解Java MessageDigest的基本用法,并可以在自己的项目中应用它。希望本文能够对读者有所帮助。

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

    本文简要介绍了Java中的MessageDigest类以及其digest()方法的使用。MessageDigest是Java中用于计算加密哈希值的工具,通过使用不同的哈希算法,可以生成不同长度的哈希值。digest()方法是其中的一个核心方法,它返回...

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

    我们通过一个使用 SHA-256 算法计算字符串散列值的实例来说明该方法的用法。SHA-256 是一个常用的加密算法,能够生成较长且具有强安全性的散列值。当然,Java 提供了多种其他加密算法供选择,开发者可以根据实际需求...

    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 ...

    MessageDigest MD5加密

    MessageDiges java MD5 java加密

    javaMessageDigest md5算法详细实现

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

    SHA-256 java加密代码

    ava.security.MessageDigest...MessageDigest 对象通过使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算并返回结果。

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

    主要介绍了Java中MessageDigest来实现数据加密的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    使用JAVA代码实现MD5加密

    * 功能:对一个字符串进行md5加密 */ public class EncryptUtil { /** * 对字符串加密的方法 * @param str * @return */ public static String toMessageDigest(String str) { try { MessageDigest...

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

    主要介绍了Java自带的加密类MessageDigest类代码示例,分享了常见的三种加密方式代码示例,具有一定参考价值,需要的朋友可以了解下。

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

    主要介绍了java自带的MessageDigest实现文本的md5加密算法,需要的朋友可以参考下

    sha1-md5 加解密代码

    sha1-md5 加密源代码 ,可以直接加入用

    java加密枝术.doc

    java.security包中的MessageDigest类提供了计算消息摘要的方法, 首先生成对象,执行其update( )方法可以将原始数据传递给该对象,然后执行其digest( )方法即可得到消息摘要。

    javascript MD5算法实现

    javascript md5摘要算法的实现

    MessageDigestTest

    总结MessageDigestTest中的一些用法。

    Java 2平台安全技术-结构,API设计和实现

    7.3.3 java.security.MessageDigest 122 7.3.4 java.security.Signature 123 7.3.5 算法参数 124 7.3.6 java.security.Key和java.security. spec.KeySpec 126 7.3.7 java.security.KeyFactory和java. security....

    MD5_MessageDigest_java_md5_消息摘要_

    MD5消息摘要,对消息进行摘要,并进行摘要验证,最后输出消息摘要的结果

    jdk-8u241-windows-i586 (1).exe

    MessageDigest 类提供信息摘要算法的功能,他是抽象类,需要MessageDigest.getInstance才能拿到MessageDigest的对象。以MD5为例下面是我碰到的问题以及解决方式 ##注意点1.拿到对象 他是抽象类,需要 ...

    Message Digest 5算法 的C ++ 实现_代码_下载

    。 * 介绍 这是一个实现消息摘要算法 MD5 的 C++ 类。该算法的目的是计算给定位串的哈希值。MD5 产生一个 16 字节(128 位)的散列。 MD5 哈希已被证明在加密上容易受到各种攻击(谷歌它们),因此不应用于安全...

Global site tag (gtag.js) - Google Analytics