Java摘要

概念


  • 它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。
  • 如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。
  • 消息摘要采用单向Hash 函数将需加密的明文”摘要”成一串密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。这样这串摘要便可成为验证明文是否是”真身”的”指纹”了
  • 摘要的目的:防止报文被篡改,并且验证消息交互方的身份
  • 摘要是单向加密

算法


MD5
SHA1

生成摘要


MD5
/**
 * 纯算法摘要 。 拼接上约定密钥。
 */
public void digest() {
   try {
      // 加上约定的密钥进行摘要
      byte[] plain = plaintext.getBytes("UTF-8");

      // 1、获取实例,指定算法
      MessageDigest md = MessageDigest.getInstance(algorithmMD5);
      // MessageDigest md = MessageDigest.getInstance(algorithmSHA);
      // 2、摘要
      md.update(plain);
      byte[] digest = md.digest();
      // byte[] digest = md.digest(plain);

      // 由于摘要hash算法是对字节二进制进行散列的,所以直接转成string是会出现乱码。要么转成Base64码,也可以转成16进制码显示
      // String digestText = BytesHexConverter.bytesToHexString(digest);
      String digestText = Base64.encode(digest);
      System.out.println(digestText);
   } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
   } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
   }
}

在这里插入图片描述

SHA1
public void digest() {
   try {
      // 加上约定的密钥进行摘要
      byte[] plain = plaintext.getBytes("UTF-8");

      // 1、获取实例,指定算法
      // MessageDigest md = MessageDigest.getInstance(algorithmMD5);
      MessageDigest md = MessageDigest.getInstance(algorithmSHA);
      // 2、摘要
      md.update(plain);
      byte[] digest = md.digest();
      // byte[] digest = md.digest(plain);

      // 由于摘要hash算法是对字节二进制进行散列的,所以直接转成string是会出现乱码。要么转成Base64码,也可以转成16进制码显示
      // String digestText = BytesHexConverter.bytesToHexString(digest);
      String digestText = Base64.encode(digest);
      System.out.println(digestText);
   } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
   } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
   }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值