听说这玩意可以防篡改——单向散列函数

简介: 由于某些原因,访问国外网站的速度较慢,所以我们常使用镜像网站下载文件。假设你正通过镜像网站从网络上下载一款软件,但是如何保证你下载的软件是正版,没有被恶意篡改过呢?怎么保证我的软件的完整性呢?

这是我要的文件吗?


  由于某些原因,访问国外网站的速度较慢,所以我们常使用镜像网站下载文件。假设你正通过镜像网站从网络上下载一款软件,但是如何保证你下载的软件是正版,没有被恶意篡改过呢?怎么保证我的软件的完整性呢?


单向散列函数


  要解决上述问题就需要用到单向散列函数,单向散列函数相当于为数据增加一个数据指纹,我们使用一个函数计算出数据的指纹,这个指纹是独一无二的,相同数据生成指纹相同,不同数据生成指纹不同(即使一小点改动最终生成的指纹都完全不同)通过对比指纹验证数据是否被篡改过


如下图所示:



  单向散列函数有一个输入和一个固定长度的输出。输入称为消息,输出称为散列值。输入可以是一个文件,一个视频,一段程序等等(本质都是二进制数据流),输入不限长度,输出散列值的长度跟消息的长度无关,不论多大长度的消息,都会计算出固定长度的散列值。


单向散列函数性质


  • 对于任何长度的输入数据块都能产生固定长度的输出散列值。
  • 能快速计算散列值。
  • 消息不同散列值不同,一点点的变动都会引起整个散列值的巨大变化。(因为散列值的长度是固定的,所以有可能会出现不同的消息产生相同散列值的情况,这种情况叫做碰撞)
  • 单向性(不能通过散列值反算出消息)


常用单向散列函数


消息摘要算法(Message Digest)


  MD4MD5是由Rivest分别在1990 年和 1992 年设计的,现在已经不再安全了。它们接受任意长度数据流后可以产生出一个128bits(16字节)的散列值。1996年后该算法被证实存在弱点,可以被破解,对于需要高度安全性的数据,建议改用其他算法,如下面的 SHA-2


安全散列算法(Secure Hash Algorithm)


  SHA 算法是一种密码散列函数算法标准,由美国国家安全局研发,SHA算法经过了SHA-1SHA-2SHA-3

  • SHA-1:一种能够产生 160bits(20字节) 散列值的单向散列函数,已经不安全,现在不推荐使用
  • SHA-2:是 SHA-1 的后继者,其下又可再分为六个不同的算法标准,包括:SHA-224SHA-256(常用)SHA-384SHA-512SHA-512/224SHA-512/256
  • SHA-3:第三代安全散列算法(之前名为 Keccak),这个算法比起其他算法计算速度明显更快


应用


  • 检测数据是否被篡改(防篡改)
  • 基于口令的加密
  • 消息认证码
  • 数字签名
  • 伪随机生成器
  • 一次性口令
相关文章
|
安全 算法 Java
互联网并发与安全系列教程(12) - 信息加密技术(单向散列加密)
互联网并发与安全系列教程(12) - 信息加密技术(单向散列加密)
96 0
|
5月前
|
存储 安全 数据安全/隐私保护
解锁Python安全新姿势!AES加密:让你的数据穿上防弹衣,无惧黑客窥探?
【8月更文挑战第1天】在数字化时代,确保数据安全至关重要。AES(高级加密标准)作为一种强大的对称密钥加密算法,能有效保护数据免遭非法获取。AES支持128/192/256位密钥,通过多轮复杂的加密过程提高安全性。在Python中,利用`pycryptodome`库可轻松实现AES加密:生成密钥、定义IV,使用CBC模式进行加密与解密。需要注意的是,要妥善管理密钥并确保每次加密使用不同的IV。掌握AES加密技术,为数据安全提供坚实保障。
218 2
|
2月前
|
存储 SQL 安全
网络安全的屏障与钥匙:漏洞、加密与意识的交织
【10月更文挑战第31天】在数字化浪潮中,网络安全成为守护信息资产的关键盾牌。本文将深入探讨网络安全中的漏洞识别、加密技术的应用以及提升个人和组织的安全意识。我们将通过实际案例分析常见的网络攻击手段,并介绍如何利用加密算法加强数据保护。同时,文章强调培养安全意识的重要性,并提供实用的建议来构建更安全的网络环境。让我们一起揭开网络安全的神秘面纱,探索防御策略,为信息安全护航。
|
存储 分布式计算 算法
最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
|
算法 Java
. 赎金信(java算法)
. 赎金信(java算法)
67 0
. 赎金信(java算法)
|
算法 安全 数据安全/隐私保护
听说这玩意可以安全交换密钥 —— Diffie-Hellman 算法
Diffie-Hellman 密钥交换算法,是由 Whitfield Diffie 和 Martin Hellman 在1976年共同提出的一个奇妙的密钥交换协议。这个算法的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。(注意:Diffie-Hellman 算法是一种建立密钥的方法,而不是加密方法,只能用于密钥的交换,而不能进行消息的加密和解密)
听说这玩意可以安全交换密钥 —— Diffie-Hellman 算法
|
安全 网络安全 数据安全/隐私保护
【计算机网络】网络安全 : 实体鉴别 ( 实体鉴别过程 | 不重数机制 | 公钥体质加密不重数 | 中间人攻击 )
【计算机网络】网络安全 : 实体鉴别 ( 实体鉴别过程 | 不重数机制 | 公钥体质加密不重数 | 中间人攻击 )
382 0
【计算机网络】网络安全 : 实体鉴别 ( 实体鉴别过程 | 不重数机制 | 公钥体质加密不重数 | 中间人攻击 )
|
数据安全/隐私保护
听说这玩意可以防止否认 —— 数字签名
发送方发送消息的时候使用私钥对消息进行签名,接收方接收消息的时候使用公钥对签名进行验证即可确定发送者身份。因为签名只能由发送者的私钥完成,所以这个签名一定是由发送者签发的,这样就没有否认的问题了,这就是数字签名(Digital Signature)。
|
算法 安全 Java
快速了解常用的对称加密算法,再也不用担心面试官的刨根问底
加密算法通常被分为两种:对称加密和非对称加密。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。 这次我们了解一下对称加密算法。
714 0
|
存储 算法 Java
【算法千题案例】每日LeetCode打卡——69.赎金信
📢前言 🌲原题样例:赎金信 🌻C#方法:数组存储 🌻Java 方法:数组存储 💬总结