但是首先,当我说“强密码学”时,我到底指的是什么?
强密码学或强密码学是应用于密码系统或组件的通用术语,被认为对密码分析具有很高的抵抗力。
http://en.wikipedia.org/wiki/Strong_cryptography
因此,“强密码术”并不是一个您并不陌生的深奥概念:“强密码术”只是一组定义和算法,已由专家 , 秘密政府机构和第三方组织进行了审查,发现很难破解。
我反复看到的一件事是,开发人员出于特定目的“发明”了一种加密方案。 事情就是这样,加密技术已有数千年的历史了。 如果您曾经“发明” 自己的方法来“加密”数据,那么您很有可能只是重新发明了几千年前发现的东西。 如果您想避免WEP在无线上犯的错误,Microsoft 在XBox上犯的错误或Sony在PS3上犯的错误,那么本博客系列应该可以帮助您避免尴尬,并在下一次鸡尾酒会上给您留下深刻的印象。
最后,我只想提一下,这实际上是我个人历史悠久的一个非常私人的主题。 我发现加密的第一个需求是在附近玩“间谍”时将笔记传递给我的朋友,并需要保持秘密要塞的位置安全。 不幸的是,当我们的树屋在那个夏天被摧毁时,我的单字母替换密码一定已经被一个神童打断了……阅读了《 阿尔文的秘密密码》之后 ,我们创造了2-3套凯撒轮 ,再也没有失去一个秘密堡垒!
下面,我们将介绍最有用的“强密码”原语之一:哈希函数。 这些小野兽令人惊叹,并具有多种用途!
那么,什么是哈希函数? 您很高兴,让我们引述不减的Wikipedia:
哈希函数是任何定义明确的过程或数学函数,可以将大量(可能大小可变的)数据转换成小的数据,通常是一个单个整数,可以用作数组的索引(参见关联数组)。 哈希函数返回的值称为哈希值,哈希码,哈希和,校验和或简称为哈希。http://zh.wikipedia.org/wiki/哈希函数
igh,维基百科曾经为普通人提供了很好的用户友好定义,因为事实并非如此,让我给出自己的定义:
(非常糟糕的)哈希函数可能很简单,例如“将所有内容一分为二,直到剩下一位为止,然后四舍五入。” 我们可以使用此函数ƒ(ƒ代表哈希函数的失败),因此ƒ(48)= 6或ƒ(451)= 8。
使用此功能ƒ的一种简单方法是保护网站。 用户创建帐户时,他们选择一个数字作为密码(p)。 在帐户创建过程中,我们计算一个新数字(c =ƒ(p))并将其存储给用户。 在每个用户的数据库中,我们最终得到(c)数字0-9。
为了对照数据库检查提供的密码,我们只需评估(c ==ƒ(s))。
这个散列函数ƒ在现实世界中并不是真正有用,因为我们的键空间只有9种可能性,它的缩放比例惊人,