首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆、散列和加密之间有什么区别?

混淆、散列和加密之间有什么区别?
EN

Stack Overflow用户
提问于 2008-10-08 19:00:45
回答 11查看 27.3K关注 0票数 37

混淆、散列和加密之间有什么区别?

以下是我的理解:

  • 散列是一种单向算法;不能逆转
  • 混淆类似于加密,但不需要任何“秘密”才能理解(ROT13就是一个例子)
  • 加密是可逆的,但是需要“秘密”才能做到

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2008-10-08 19:07:29

散列是一种基于较大数据块创建半唯一键的技术.在给定的哈希中,您最终会有“冲突”(例如,两个不同的数据段计算到相同的哈希值),当您这样做时,通常会创建更大的哈希键大小。

混淆通常包括试图删除有用的线索(即有意义的变量/函数名称)、删除空格以使事物难以阅读,以及通常以复杂的方式进行操作,从而使后续工作变得困难。它没有像“真”加密那样提供严重的安全级别。

加密可以遵循几种模式,其中一种是“秘密”方法,称为私钥加密,其中双方都有秘密密钥。公钥加密使用共享的单向密钥进行加密,私人接收密钥用于解密。使用公钥,只有接收者才需要知道秘密。

票数 34
EN

Stack Overflow用户

发布于 2008-10-08 19:06:56

这是一个高层次的解释。我将努力完善它们:

哈希-在一个完美的世界里,它是一个随机的先知。对于相同的输入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是明文。

票数 12
EN

Stack Overflow用户

发布于 2008-10-08 21:06:16

散列是一种单向算法,用于在不损害引用的情况下将输入与引用进行比较。

它通常用于登录比较密码,如果你使用信用卡购物,你也可以在你的收信人上找到它。在那里你会发现你的信用卡号码中隐藏了一些数字,这样你就可以很好地证明你的信用卡是用来买东西的,而在你的垃圾里找不到你的信用卡号码。

一个非常天真和简单的散列是“字符串的前三个字母”。这意味着"abcdefg“的散列将是"abc”。这个函数显然不能逆转,这就是散列的全部目的。然而,请注意,"abcxyz“将有完全相同的散列,这被称为冲突。因此:散列只能以一定的概率证明两个比较值是相同的

另一个非常天真和简单的哈希是一个数字的5模,在这里你会看到6,11,16等等。都会有相同的散列: 1。

现代哈希算法的设计是为了尽可能减少碰撞次数,但它们永远无法完全避免。经验法则是:哈希越长,冲突就越少。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/184328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档