哈希(Hash)和加密(Encrypt)的区别及应用

前言

今天出去面试,面试官当即问了哈希和加密的区别是什么?内心一万个**,要造火箭还是咋滴?

不过面试官既然问了,下面我就学习下哈希和加密的知识,了解两者的基本概念、区别和使用场景。

区别

首先就概念上来说:hash是将目标文本转换成具有相同长度的、不可逆的杂凑字符串,Encrypt是将目标文本转换成不同长度的、可逆的密文。从概念上可以看出两者的区别,下面就不做具体的阐述了。举个例子标明两者的区别:

hash相当于做一份香喷喷的米饭。从将米饭和水放入电饭锅开始,在应用散列函数(混合、煮)之后,在一定时间后会得到一锅米饭。逆转的话是你不能将米饭分解成大米和水,你不能知道放入了多少大米和水,因为这些被三列功能破坏了。理论上,许多不同的输入变量产生相同的米饭,但如果给出其中一个,你就无法确定知道是什么输入产生了它。

而对于加密来说,相对简单些,把加密看作是一个保险箱,不管你用什么方法放进去,只有你拥有这把钥匙,你就会能拿出来,这个是对称的操作,给定一个键和输入,就会得到特点的输出。给定输出和相同的键,就会得到输入,这里的键可以看作是salt。

基本原理

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

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

使得R转换为唯一的S。

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

 

选择应用

在选择使用hash还是Encrypt基本原则是:如果被保护数据仅仅用作比较验证,在以后不需要还原成明文形式,则使用哈希;如果被保护数据在以后需要被还原成明文,则需要使用加密。

目前常用的hash包括但不限于MD5,SHA1,SHA256;加密包括但不限于DES,TDES,AES,RSA等。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值