混淆,散列和加密有什么区别?
这是我的理解:
散列是一种单向算法; 无法逆转
混淆类似于加密,但不需要任何"秘密"来理解(ROT13就是一个例子)
加密是可逆的,但这样做需要"秘密"
theraccoonbe.. 30
散列是一种基于较大的数据创建半唯一键的技术.在给定的散列中,您最终会有"冲突"(例如,两个不同的数据块计算到相同的散列值),当您这样做时,通常会创建一个更大的散列键大小.
混淆通常涉及尝试删除有用的线索(即有意义的变量/函数名称),删除空格以使事情难以阅读,并且通常以复杂的方式处理事务以使跟踪困难的事情.它没有像"真正的"加密那样提供严格的安全级别.
加密可以遵循几种模型,其中一种是"秘密"方法,称为私钥加密,其中双方都有密钥.公钥加密使用共享单向密钥进行加密,使用私有收件人密钥进行解密.使用公钥,只有收件人需要拥有秘密.
散列是一种基于较大的数据创建半唯一键的技术.在给定的散列中,您最终会有"冲突"(例如,两个不同的数据块计算到相同的散列值),当您这样做时,通常会创建一个更大的散列键大小.
混淆通常涉及尝试删除有用的线索(即有意义的变量/函数名称),删除空格以使事情难以阅读,并且通常以复杂的方式处理事务以使跟踪困难的事情.它没有像"真正的"加密那样提供严格的安全级别.
加密可以遵循几种模型,其中一种是"秘密"方法,称为私钥加密,其中双方都有密钥.公钥加密使用共享单向密钥进行加密,使用私有收件人密钥进行解密.使用公钥,只有收件人需要拥有秘密.
这是一个高级别的解释.我会尝试改进它们:
哈希 - 在一个完美的世界里,它是一个随机的神谕.对于相同的输入X,您总是接收相同的输出Y,即与X相关的无关.这在数学上是不可能的(或者至少是未经证实的).我们得到的最接近的是陷门功能.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是明文.
甲散列是单向算法用于比较的基准的输入而不损害参考.
它通常用于登录以比较密码,如果您使用信用卡购物,也可以在您的reciepe上找到它.在那里,你会发现你的信用卡号码隐藏了一些数字,这样你可以很高的证明你的卡用于购买东西,而搜索垃圾的人将无法找到你的卡号.
一个非常天真和简单的哈希是"字符串的前3个字母".这意味着"abcdefg"的哈希将是"abc".这个函数显然不能被反转,这是散列的全部目的.但是,请注意"abcxyz"将具有完全相同的哈希值,这称为冲突.所以再次:哈希只能证明两个比较值是相同的.
另一个非常天真和简单的哈希是数字的5模数,在这里你会看到6,11,16等...都将具有相同的哈希:1.
现代哈希算法旨在使碰撞次数尽可能低,但永远不能完全避免.根据经验:散列越长,碰撞越少.