MessageDigest

来源:互联网 发布:solidworks软件下载64 编辑:程序博客网 时间:2024/05/16 08:16
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/
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 云素材 纪先寒洛紫悦免费阅读 无路可逃紫洛 艾洛迪亚4紫装备爆出详细 云紫砂 紫砂茶叶罐 云紫砂论坛 紫砂壶吧 紫砂壶的茶垢怎么去除 紫砂壶十八式 李晓璐紫砂壶 紫砂壶的种类 紫砂壶制作过程 葛军紫砂壶 当代紫砂壶名家排名 紫砂壶盖子 紫砂壶什么牌子好 香云纱价格 香云纱是什么面料 香云纱长袖连衣裙 香云纱旗袍 真丝连衣裙香云纱 云组件 破云156章1800字肉 云字组词 云字拼音 天什么云什么四字词语 云在田字格正确写法 云田字格正确写法 云字组词大全 云字 云字加偏旁 破云156章400字肉 百万云字论坛各坛资料 云字笔画 破云156赠送一千八百字ao3 带云的字有哪些字 人加云是什么字 云字加一笔有哪些字 云相似的字 云字加一笔有几个字