哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用

本文探讨了哈希与加密的基本概念、区别,并从数学基础角度进行阐述。强调哈希的不可逆性和固定长度输出,加密的可逆性与长度变化。在软件开发中,哈希常用于数据验证,而加密用于数据保护。文章还讨论了简单的哈希方法及其潜在攻击,提出使用多重混合哈希增强安全性,并提供了加密解密的示例。
摘要由CSDN通过智能技术生成

0、摘要

      今天看到吉日嘎拉一篇关于管理软件中信息加密和安全的文章 , 感觉非常有实际意义。文中作者从实践经验出发,讨论了信息管理软件中如何通过哈希和加密进行数据保护。但是从文章评论中也可以看出很多朋友对这个方面一些 基本概念比较模糊,这样就容易“照葫芦画瓢”,不能根据自身具体情况灵活选择和使用各种哈希和加密方式。本文不对哈希和加密做过于深入的讨论,而是对哈希 和加密的基本概念和原理进行阐述、比较,并结合具体实践说明如何选择哈希和加密算法、如何提高安全性等问题,使朋友们做到“知其然,知其所以然”,这样就 能通过分析具体情况,灵活运用哈希和加密保护数据。

1、哈希(Hash)与加密(Encrypt)的区别

      在本文开始,我需要首先从直观层面阐述哈希(Hash)加密(Encrypt) 的区别,因为我见过很多朋友对这两个概念不是很清晰,容易混淆两者。而正确区别两者是正确选择和使用哈希与加密的基础。

      概括来说,哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。

      具体来说,两者有如下重要区别:

      1、哈希算法往往被设计成生成具有相同长度的文本,而加密算法生成的文本长度与明文本身的长度有关。

      例如,设我们有两段文本:“Microsoft”和“Google”。两者使用某种哈希算法得到的结果分别 为:“140864078AECA1C7C35B4BEB33C53C34”和“8B36E9207C24C76E6719268E49201D94”, 而使用某种加密算法的到的结果分别为“Njdsptpgu”和“Hpphmf”。可以看到,哈希的结果具有相同的长度,而加密的结果则长度不同。实际上, 如果使用相同的哈希算法,不论你的输入有多么长,得到的结果长度是一个常数,而加密算法往往与明文的长度成正比。

      2、哈希算法是不可逆的,而加密算法是可逆的。

      这里的不可逆有两层含义,一是“给定一个哈希结果R,没有方法将E转换成原目标文本S”,二是“给定哈希结果R,即使知道一段文本S的哈希结果为R,也不 能断言当初的目标文本就是S”。其实稍微想想就知道,哈希是不可能可逆的,因为如果可逆,那么哈希就是世界上最强悍的压缩方式了——能将任意大小的文件压 缩成固定大小。

      加密则不同,给定加密后的密文R,存在一种方法可以将R确定的转换为加密前的明文S。

      这里先从直观层面简单介绍两者的区别,等下文从数学角度对两者做严谨描述后,读者朋友就知道为什么会有这两个区别了。

2、哈希(Hash)与加密(Encrypt)的数学基础

      从数学角度讲,哈希和加密都是一个映射。下面正式定义两者:

      一个哈希算法 是一个多对一映射,给定目标文本S,H可以将其唯一映射为R,并且对于所有S,R具有相同的长度。由于是多对一映射,所以H不存在逆映射

使得R转换为唯一的S。

      一个加密算法 是一个一一映射,其中第二个参数叫做加密密钥,E可以将给定的明文S结合加密密钥Ke唯一映射为密文R,并且存在另一个一一映射 ,可以结合Kd将密文R唯一映射为对应明文S,其中Kd叫做解密密钥。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值