消息摘要 MD5 和 SHA 的使用

来源:互联网 发布:js trimend 编辑:程序博客网 时间:2024/04/29 11:22

使用方法 :
首先用生成一个 MessageDigest 类 , 确定计算方法
java.security.MessageDigest alga=java.security.MessageDigest.getInstance(“SHA-1”);
添加要进行计算摘要的信息
alga.update(myinfo.getBytes());
计算出摘要
byte[] digesta=alga.digest();
发送给其他人你的信息和摘要
其他人用相同的方法初始化 , 添加信息 , 最后进行比较摘要是否相同
algb.isEqual(digesta,algb.digest())
相关 AIP
java.security.MessageDigest 类
static getInstance(String algorithm)
返回一个 MessageDigest 对象 , 它实现指定的算法
参数 : 算法名 , 如 SHA-1 或 MD5
void update (byte input)
void update (byte[] input)
void update(byte[] input, int offset, int len)
添加要进行计算摘要的信息
byte[] digest()
完成计算 , 返回计算得到的摘要 ( 对于 MD5 是 16 位 ,SHA 是 20 位 )
void reset()
复位
static boolean isEqual(byte[] digesta, byte[] digestb)
比效两个摘要是否相同
代码:

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();     }  }
原创粉丝点击