混淆、哈希和加密的区别是什么?
这是我的理解:
- 哈希是一种单向算法;不能被逆转
- 混淆类似于加密,但不需要任何“秘密”来理解(ROT13是一个例子)
- 加密是可逆的,但需要“秘密”才能实现
混淆、哈希和加密的区别是什么?
这是我的理解:
哈希是一种基于较大数据创建半唯一(semi-unique)键的技术。在给定的哈希值中,最终会出现“碰撞”(即两个不同的数据片段计算得到相同的哈希值),当出现碰撞时,通常会创建更大的哈希键大小。
混淆通常涉及尝试去除有用提示(即有意义的变量/函数名称)、去除空格使内容难以阅读,并以繁琐的方式完成操作,使跟踪正在进行的操作变得困难。它不提供像“真正”的加密那样的高级别安全性。
加密可以遵循几个模型之一,其中之一是“秘密”方法,称为私钥加密,双方都拥有一个秘密密钥。公钥加密使用共享单向密钥进行加密和私人接收者密钥进行解密。对于公钥加密,只有接收者需要拥有密钥。
那是一个高层次的解释。 我会尝试对其进行细化:
哈希 - 在完美世界中,它是一个随机预言机。 对于相同的输入X,您始终会收到与X无关的相同输出Y。 这在数学上是不可能的(或者至少尚未被证明)。 我们能够接近的最近方法是陷门函数。 H(X)= Y,其中H-1(Y)= X 非常难以实现,您最好尝试暴力破解Z,使得H(Z)= Y
混淆(我的观点) - 任何函数f,使得f(a)= b,其中您依赖于f保密性。 F可以是哈希函数,但“混淆”部分意味着通过安全性来实现模糊性。 如果您以前从未见过ROT13,则它将是混淆
加密 - Ek(X)= Y,Dl(Y)= X,其中E为所有人所知。 k和l是密钥,它们可以相同(在对称中,它们是相同的)。 Y是密文,X是明文。
混淆在密码学中是指在输入数据被哈希或加密之前进行编码。
这使得暴力破解攻击变得更加困难,因为很难确定正确的明文。
这是我一直以来的看法。
哈希是使用一组算法从另一个值中派生出一个值。根据使用的算法,这可能是单向的,也可能不是。
混淆是通过符号替换使某些内容更难读取。
加密类似于哈希,但该值取决于您提供给算法的另一个值。
简短回答:
哈希 - 在某些数据上创建一个检查字段(以便检测数据何时被修改)。这是一种单向函数,原始数据无法从哈希中推导出来。典型的标准包括SHA-1、SHA256等。
混淆 - 修改您的数据/代码以混淆其他人(没有真正的保护)。这可能会丢失一些原始数据,也可能不会。这方面没有真正的标准。
加密 - 使用密钥转换数据,以便只有具有正确密钥的人才能理解它。加密数据可以解密以获取原始数据。典型的标准包括DES、TDES、AES、RSA等。
一切都好,除了混淆并不真正类似于加密 - 有时它甚至不涉及像 ROT13 这样简单的密码。
混淆是隐藏或使某物更难理解。
哈希将输入通过函数运行,并生成可以作为输入参考的输出。它不一定是唯一的,一个函数可以为不同的输入生成相同的输出。
加密以独特的方式将输入转换为输出。存在一对一的关系,因此不存在数据丢失或混淆的可能性 - 输出始终可以无歧义地转换回输入。
哈希是从一个值生成另一个值的单向任务。算法应尽可能地创建一个尽可能短和独特的值。
混淆是使某些东西难以阅读,而不改变语义。 它涉及值转换,去除空格等。 某些形式的混淆也可以是单向的,因此无法获取起始值
加密是双向的,并且总有一些解密工作相反。
所以,是的,你大多数情况下是正确的。