php - JavaScript 中的 md5 等效项

标签 php javascript hash md5

Possible Duplicate:
How to calculate md5 hash of a file using javascript
Can I convert password to md5 in javascript before sending to php page?

有没有任何函数或方法可以使用JavaScript作为PHP中的散列来加密字符串?我要求用户设置密码,但我不希望在 php 应用哈希之前,密码以字符串格式出现在服务器上。

最佳答案

md5 是一种散列方法,而不是加密方法。这是一种可以用任何语言实现的通用算法,因此我确信存在 JavaScript 版本。

但是,你的逻辑是有缺陷的。为什么要在客户端对密码进行哈希处理?然后,经过哈希处理的密码可能会在发送到服务器的途中被捕获,这比服务器单独对其进行哈希处理更糟糕。这不提供任何保护。

与此相关的是,md5 是一个非常不安全的哈希值。使用bcrypt

<小时/>

散列与加密之间的区别在于,前者创建摘要,而后者创建可以解密的加密内容。哈希摘要无法转换回原始数据,因为它丢失了(故意)。散列用于身份验证,加密用于保密。

<小时/>

为了扩展客户端哈希至多与服务器端哈希一样有效的事实,请考虑当哈希摘要与存储在中的值进行比较时完成身份验证的事实数据库。

您存储的值是原始密码的md5。要进行身份验证,您必须接收密码,使用 md5,然后将其与数据库中的摘要进行比较。这意味着 md5 最多只能调用一次。如果你想在JS中调用它,那么在php中就不会调用它。这意味着,如果有人截获 md5,其效果与截获原始密码一样有效,因为他们只需将 md5 发布到您的服务器,而无需进行额外的哈希处理。

如果您在服务器端执行了 md5 哈希,那不会有任何区别,因为收到相同的未哈希值(相对于 PHP 操作) 。事实上,它不太安全,因为重复相同的哈希会增加冲突的可能性。

关于php - JavaScript 中的 md5 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14640514/

相关文章:

javascript - Google Feed API 日期到 HTML5 日期时间

python - 如果我们仍然需要检查每个项目,哈希的含义是什么?

php - 在 sql 比较查询之前将长字符串转换为短哈希 - 提高性能?

php - Symfony 3.3 和 Swiftmailer - 由服务器延迟的 Controller 创建和发送的邮件

Javascript 日期正则表达式 例如。 2010-06-03

php - 在这个 Symfony2 REST API 教程中,路由中定义的 'posts' 路径部分在哪里?

javascript - 如何在取消选中 AngularJS 中的复选框时刷新下拉菜单

perl - 错误 : Not a HASH reference

用于元搜索引擎的 PHP 并行处理

php - 如何允许其他站点从您的站点检索数据?