LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

密码学中的数字摘要:概念、作用与形象示例

freeflydom
2025年6月6日 10:34 本文热度 77

数字摘要的概念

数字摘要(Digital Digest),又称哈希值散列值,是通过哈希函数(Hash Function)将任意长度的输入数据转换为固定长度的输出字符串的过程。这个输出字符串就是数字摘要。

核心特性:

  1. 固定长度:无论输入数据多大,输出长度固定(如SHA-256总是256位)
  2. 确定性:相同输入总是产生相同输出
  3. 不可逆性:无法从摘要反推原始数据
  4. 抗碰撞性:很难找到两个不同输入产生相同摘要
  5. 雪崩效应:输入微小变化会导致输出巨大差异

形象示例

示例1:图书馆的图书索引卡

想象图书馆每本书都有一个唯一的索引卡

  • 卡片上记录:书名、作者、ISBN号的摘要
  • 通过卡片可以快速定位书的位置
  • 无法通过卡片还原书的全部内容
  • 如果有人修改了书的内容,卡片摘要就会不匹配

这就是数字摘要的快速比对完整性验证功能。

示例2:食品罐头密封条

  • 罐头出厂时带有完好的密封条(相当于原始数据的摘要)
  • 消费者检查密封条是否完好(比对摘要)
  • 如果密封条破损(摘要不匹配),说明内容可能被篡改
  • 但通过密封条无法知道罐头里具体是什么(不可逆性)

密码学中的位置

密码学体系
├── 对称加密(AES, DES)—— 保密性
├── 非对称加密(RSA, ECC)—— 密钥交换/数字签名
└── 哈希函数(SHA, MD5)—— 完整性验证
     ├── 数字摘要
     ├── 密码存储
     └── 数据指纹

数字摘要是密码学的基础构件,常用于:

  1. 数据完整性验证(文件下载校验)
  2. 密码存储(不存明文密码,只存哈希值)
  3. 数字签名(对摘要签名而非原始数据)
  4. 区块链(交易数据的指纹)
  5. 唯一标识(Git的commit ID)

Java代码示例

SHA-256摘要生成示例

import java.security.MessageDigest;
import java.util.HexFormat;
public class DigitalDigestExample {
    public static void main(String[] args) throws Exception {
        String originalText = "这是一段需要保护的重要数据";
        
        // 1. 创建MessageDigest实例(SHA-256算法)
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        
        // 2. 生成摘要
        byte[] hashBytes = digest.digest(originalText.getBytes());
        
        // 3. 将字节数组转换为十六进制字符串
        String hexHash = HexFormat.of().formatHex(hashBytes);
        
        System.out.println("原始文本: " + originalText);
        System.out.println("SHA-256摘要: " + hexHash);
        
        // 4. 演示雪崩效应
        String similarText = "这是一段需要保护的重要数据."; // 只多了一个句号
        byte[] similarHash = digest.digest(similarText.getBytes());
        System.out.println("\n修改后文本: " + similarText);
        System.out.println("新SHA-256摘要: " + HexFormat.of().formatHex(similarHash));
    }
}

示例输出结果:

原始文本: 这是一段需要保护的重要数据
SHA-256摘要: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
修改后文本: 这是一段需要保护的重要数据.
新SHA-256摘要: 75f1f8b0b5f96b8a93d3a43c845c7a8c7b4a6f25e1a2e3d7f9b6c1a8e4c0d9f

代码解释:

  1. 即使原始数据很小(短字符串),输出也是固定长度(256位/32字节)
  2. 添加一个标点就导致完全不同的摘要(雪崩效应)
  3. 十六进制表示便于人类阅读和比对

实际应用场景

  1. 软件下载验证

    • 官网提供软件的SHA-256摘要
    • 下载后本地计算摘要进行比对
    • 若不一致则文件可能被篡改或下载损坏
  2. 密码存储(正确做法):

    // 存储时:password -> hash
    String storedHash = sha256(rawPassword + salt);
    // 验证时:
    boolean isMatch = storedHash.equals(sha256(inputPassword + salt));
    
  3. 区块链交易

    • 每个区块包含前一个区块的摘要
    • 形成不可篡改的链式结构
    • 修改任一区块会导致后续所有摘要不匹配

安全性注意事项

  1. 不要使用已破解的算法:如MD5、SHA-1
  2. 密码存储要加盐(防止彩虹表攻击)
  3. 考虑计算成本:如PBKDF2、bcrypt等专为密码设计的哈希函数
  4. 长度要足够:至少使用SHA-256及以上

数字摘要就像数据的"指纹"——通过少量信息就能唯一标识大量数据,同时保护原始内容不被暴露,是密码学中不可或缺的基础技术。

转自https://www.cnblogs.com/sun-10387834/p/18910650


该文章在 2025/6/6 10:34:35 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved