MessageDigest实现登录加密

Class MessageDigest

   抽象类:public abstract class MessageDigest extends MessageDigestSpi

      (java.security.MessageDigest,  java.security.MessageDigestSpi)

  这个MessageDigest类为应用程序提供消息摘要算法的功能,如SHA-1或SHA-256。消息摘要是安全的单向哈希函数,它接受任意大小的数据并输出固定长度的哈希值。

  MessageDigest对象开始初始化。使用update方法对数据进行处理。在任何时候都可以调用reset来重置摘要。在更新了所有要更新的数据之后,应该调用其中一个摘要方法来完成hash计算。

  对于给定数量的更新,可以调用摘要方法一次。调用摘要之后,MessageDigest对象将重置为其初始化状态。

  实现可以自由地实现Cloneable接口。客户端应用程序可以通过尝试克隆和捕获CloneNotSupportedException来测试可克隆性

 1 MessageDigest md = MessageDigest.getInstance("SHA-256");
 2 
 3  try {
 4      md.update(toChapter1);
 5      MessageDigest tc1 = md.clone();
 6      byte[] toChapter1Digest = tc1.digest();
 7      md.update(toChapter2);
 8      ...etc.
 9  } catch (CloneNotSupportedException cnse) {
10      throw new DigestException("couldn't make digest of partial content");
11  }

标准的MessageDigest 算法

构造函数:

方法:

例子:

    private static byte[] getMessageDigest(byte[] randnum, String password) {
        //声明消息摘要对象
        MessageDigest md = null;
        try {
            //创建消息摘要
            md = MessageDigest.getInstance("MD5");
            //将随机数据传入消息摘要对象
            md.update(randnum);
            //将口令的数据传给消息摘要对象
            md.update(password.getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        //获得消息摘要的字节数组
        return md.digest();
    }

详情可参考 https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html?is-external=true

猜你喜欢

转载自www.cnblogs.com/zzm96/p/12443729.html