消息摘要(Message Digest)

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

  HASH函数的抗冲突性使得如果一段明文稍有变化,哪怕只更改该段落的一个字母,通过哈希算法作用后都将产生不同的值。而HASH算法的单向性使得要找到哈希值相同的两个不同的输入消息,在计算上是不可能的。所以数据的哈希值,即消息摘要,可以检验数据的完整性。

  哈希函数的这种对不同的输入能够生成不同的值的特性使得无法找到两个具有相同哈希值的输入。因此,如果两个文档经哈希转换后成为相同的值,就可以肯定它们是同一文档。所以,当希望有效地比较两个数据块时,就可以比较它们的哈希值。例如,可以通过比较邮件发送前和发送后的哈希值来验证该邮件在传递时是否修改。

import java.security.MessageDigest;public class MessageDigestTest {public static void main(String[] args) throws Exception {byte[] srcText = "hellokitty test MessageDigest".getBytes("UTF8");// 使用getInstance("算法")来获得消息摘要,这里使用SHA-1的160位算法MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");System.out.println(" " + messageDigest.getProvider().getInfo());// 开始使用算法
        messageDigest.update(srcText);System.out.println(" Digest:");// 输出算法运算结果System.out.println(new String(messageDigest.digest(), "UTF8"));// 同样的文本,输出同样的结果
        messageDigest.update(srcText);System.out.println(new String(messageDigest.digest(), "UTF-8"));}
}

java中的数据加密1 消息摘要相关推荐

  1. java中使用MD5进行计算摘要

    java中使用MD5进行加密 在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖 ...

  2. java 结合redis队列_在 Java 中使用 redis 的消息队列服务

    前言 关于 redis 我们前面已经讨论过了缓存.分布式锁.分布式唯一标识.LBS服务的用法,这里我们来谈谈利用 redis 来实现一个消息服务. 典型的消息服务是一个生产者和消费者模式的服务.一般是 ...

  3. MD5中使用16进制消息摘要

    由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题. 但,二进制数太长了.比如int 类型占用4个字节,32位.比如100,用int类型的二进制数表达将是: ...

  4. 消息摘要和数字签名(Java简单实现)

    摘要: 本文主要对数字签名和消息摘要进行简要介绍,并通过java实现基本流程. 概念介绍: 消息摘要 一个消息摘要是一个数据块的数字指纹.即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于 ...

  5. java中如何调用自身结构_如何在Java中的自定义异常中设置我自己的消息,可以检索我的getMessage()但是没有使用构造函数,有什么办法吗?...

    我刚学习 Java中的异常处理.我想知道的不是尝试说: throw new Exception("My Message"); 和 String message=ex.getMess ...

  6. java jvm调优_(第2部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    java jvm调优 这是以前的文章(第3部分,共1部分)的继续:有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的提要 . 事不宜迟,让我们开始使用我们的 ...

  7. java jvm调优_(第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    java jvm调优 我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候才 ...

  8. (第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候需要做我的智力进步! 感 ...

  9. (第2部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    这是以前的文章(第3部分,共1部分)的继续:有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的提要 . 事不宜迟,让我们开始使用我们的下一组博客和视频,印章 ...

最新文章

  1. 剑指offer-包含min函数的栈
  2. MySQL分组查询—添加分组后筛选
  3. Linux操作系统文档
  4. 第九章 Libgdx内存管理
  5. bLue的除法算术题 数学
  6. .NET中操作SQLite
  7. 2021年下半年 全国计算机技术与软件专业技术资格考试 浙江省合格人员数据分布
  8. 机器学习(Andrew Ng)作业代码(Exercise 1~2)
  9. Android CertificateSource系统根证书的检索和获取
  10. Idea集成使用SVN教程
  11. java area类用法_java反射
  12. 各系统查询IP地址和MAC地址的脚本或命令
  13. 单片机实例11—— 00-59秒计时器(利用软件延时)(硬件电路图+汇编程序+C语言程序)
  14. 红米note3全网通版刷机救砖 9008强刷(无需短接)
  15. 聊一聊数据库的行存与列存
  16. E课网AHB-SRAMC
  17. 新H3C服务器做RAID
  18. 什么是编码器、解码器?(CNN\RNN....)
  19. Python netmiko库实现huawei/h3c网络设备配置
  20. 计算机函数公式发生额总计,如何用Excel Sumif函数做查询模板统计客户在不同时间借款的总金额...

热门文章

  1. 关于Domain-Specific Languages
  2. asp.net performance
  3. Win64 驱动内核编程-10.突破WIN7的PatchGuard
  4. 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
  5. 【计算机网络】数据链路层 : 概述 ( 基本概念 | 功能 | 为 “网络层“ 提供的服务 )
  6. 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( K-Means 方法缺陷 | 基于密度聚类原理及概念 | ε-邻域 | 核心对象 | 直接密度可达 | 密度可达 | 密度连接 )
  7. 多态Poly中的向上/下转型 Upcast/Downcast
  8. 【KEIL·单片机·扫盲贴】关于ARM单片机程序内存使用情况的细致讨论。
  9. [拓扑排序/强联通分量] [NOIP201402] 信息传递
  10. Codeforces Round #304 C(Div. 2)(模拟)