2014-10-17 78 views
1

目前,我正在使用我在网上找到的代码加密输入数据库的数据,并作为该主题的介绍。我的问题来自两篇WikiHow文章(特别是这些文章):一篇关于login加密;另一个在session security。两篇文章看起来相当不错;然而,这两者之间存在一个关键的区别:前者声明所用的hasing算法的JavaScript定义($password = hash('sha512', $password . $salt)是PHP所必需的,它本身可以工作)在变量上使用加密(哈希算法)

即使包含PHP hash()方法在这两篇文章),第一状态的笔者,'sha512'加密本身必须是外部使用另一种语言(笔者提出的JavaScript)来定义

从阅读PHP文档,我的印象是hash()能处理由标识符识别的一系列预定义哈希算法,例如whirpool,sha512等。这些PHP标识符可以通过hash_algos()获取(或者您可以阅读文档)。

我错在认为特定的预定义散列算法的外部定义是不必要的?

+1

散列在Javascript是唯一真正企图在通过不安全的HTTP协议传输之前保护密码。密码实际上只能通过HTTPS发送。 – Jonathon 2014-10-17 13:53:49

+0

@Jonathon这就是我的想法。所以,真的,JavaScript需要的唯一原因是转移不安全? – Thomas 2014-10-17 14:07:22

+1

有点咆哮,但他让公平点> http://matasano.com/articles/javascript-cryptography/ – Dennis 2014-10-17 14:07:40

回答

1

我看不需要使用JavaScript来散列字符串。个人而言,我宁愿使用bcrypt而不是sha512,但它很好,它不是一个真正的弱算法。

$password = hash('sha512', $password . $salt) 

这是一个散列你的密码的好方法,如果你觉得喜欢去全油门,你可以看一下PBKDF2

http://en.wikipedia.org/wiki/PBKDF2 https://defuse.ca/php-pbkdf2.htm