散列、加密、编码 漫谈

本文详细探讨了散列、加密和编码的区别与联系。散列用于数据校验,如MD5和SHA,特点是不可逆且微小变化会导致显著不同的摘要。加密涉及明文与密文的双向转换,确保信息安全。编码则主要是信息的转换形式,不涉及隐私保护。文章还讨论了加盐、彩虹表、MD5碰撞以及加密的安全原则。
摘要由CSDN通过智能技术生成

散列(又叫Hash)和加密在身份校验、敏感信息传输等应用中用途广泛。

把他们放在一起写的原因是,网上太多资料,将散列和加密的概念混为一谈,误导性极大。

由于编码/解码运算和上述二者有一定的相似之处,因此放在这里一并讲述。

注:本文中,为了表述严谨,所有的“位”代表的是字符个数之意,而bit则指代计算机数据中的基本单位比特。

三者的共同点

它们都表述了一种映射关系,将原始数据A映射到新的数据B。

在散列运算中,B一般称之为摘要,英文为digest. 其代表算法有MD5,SHA1, SHA256等。从A -> B的运算,称之为散列、哈希;从B -> A的运算(严格意义上来说,它不算一种运算)是不存在的,当然可以通过一些其他的手段比如查表法来实现,这个在下文中会谈到。

在加密运算中,A一般称之为明文或原文,B一般称之为密文。A->B的运算,称为加密;反之,即为解密。

而在编码中,A->B的运算称为编码,反之为解码。

三者的区别

散列

在散列运算中,是将一个较长的数据A,运算成为一个较短的数据B,如MD5的128bits,SHA1的160bits。

以字符a举例,它的MD5值是0cc175b9c0f1b6a831c399e269772661。一共32个字节,每个字节占用8bit,为什么说MD5是128bit呢?原因在于这

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值