码迷,mamicode.com
首页 > 其他好文 > 详细

Hashing function

时间:2016-06-20 18:54:01      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

Hashing function (散列函式) 在网页应用中被广泛采用,从数码签署、错误检测、登入验证、到压缩储存空间,由于它的原理比较复杂,很多人把它跟加密函式混淆,对于如何运用hash function,如何选择合适的hash function,和它的优点缺点都不清楚,本文尝试解答这些问题。

算法(algorithm),通常用来把一大串不定长度的数据影射到一个固定长度的、较短的数据,这个固定长度的数据称为hashing value (散列值)。

1.

      数码签署

      当然,我们还要确保hash value 不会在传送途中被人拦截并且修改,但这属于通讯安全的问题,超越了hash function 的讨论。
   2.

      错误检测

      在这种用途种中,理想的hash function 跟上面的要求差不多,就是任何对原本资料的改动都会令产生的hash value 改变。
   3.

      登入验证

      在伺服器上储存用户的系统密码是有风险的,第一这样做等于把密码的安全交托给伺服器管理员,他们一定可靠吗?别忘记密码万一泄漏背黑镬的是你而不是他们啊;第二很多用户把相同的密码应用在很多不同的系统(这样做当然很不好,但你无法限制用户不可以这样做),当一个系统被黑客入侵泄漏了用户的密码,他们在其他系统的帐号也同时中门大开,后果可以很严重。这种用途的hash function,必须是不可能返过来从hash value 计算原本的密码。此外,由于collision 的缘故,只要找到一个密码,它的hash value 与用户的密码的hash value 相同,便可以冒认这名用户登入系统,无须知道真正的密码,所以hash value 的数量必须非常庞大,使collision 的可能性很低很低,使寻找这个「伪冒」密码的人要付出很大的代价。
   4.

      压缩储存空间

      数据结构,很多高阶编程语言包括PHP、Perl、gawk 等都支援关连阵列,背后的原理就是利用hash function 把这些数据转换成数字,然后读取阵列中的元素。echo sha1("I am a happy boy");

Hash 的用法也很简单:

echo hash("sha256","I am a happy boy.");

print_r(hash_algos());

Hashing function

标签:

原文地址:http://www.cnblogs.com/agang-php/p/5601385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!