任何人都看到过用Javascript实现crypt(3)
Anybody seen a crypt(3) implementation in Javascript?
我正在寻找用javascript实现crypt(3)。(不是通用的"crypt"算法,而是/etc/shadow
中使用的crypt(3)算法,例如在Linux系统上)。有人见过吗?有开放的许可证吗?
我也有点担心性能:用javascript写一个可能吗?例如,sha512密码源具有:
/* Repeatedly run the collected hash value through SHA512 to burn
CPU cycles. */
for (cnt = 0; cnt < rounds; ++cnt)
{ ... }
因此,如果算法在C中"消耗CPU周期",那么它在javascript中会做什么?油炸(例如,在IE6中?哎呀!)我不是在用javascript编写暴力攻击util,只是偶尔调用一次密码,所以也许没关系。
背景:我们正在为我们的网络应用程序从用户提供的/etc/password
//etc/shadow
文件中导入用户。由于我们所掌握的关于用户密码的唯一信息是crypt(3)输出格式,因此为了避免以明文形式发送回用户密码,据我所见,我们需要crypt的客户端(javascript)实现,因此当网络服务器提供salt时,客户端会发送回crypt。
使用crypt(3)客户端的任何替代方案,如果允许我们根据/etc/password
//etc/shadow
安全地对服务器端进行身份验证,并且不需要https://,也将被视为有效答案。
Javascript加密不安全。你必须使用SSL这个链接有很多很好的理由,所以我只在这里发布一个:
如果您不信任网络提供密码,或者更糟的是,不信任服务器不保守用户机密,您就不能信任他们提供安全代码。在你引入加密之前嗅探密码或阅读日记的同一个攻击者只是在你引入后劫持加密代码。
如果您通过SSL发送Javascript加密,则不再需要Javascript加密;你有"真正的"密码学。
此外,由于您只发送密码的哈希并将其与现有哈希进行比较,因此攻击者复制哈希并随时使用它是很简单的。这被称为重放攻击,它特别阴险,因为你无法判断出发生了什么错误。
因此,您必须使用SSL。让用户通过SSL连接发送密码,并在服务器上进行加密(3)。根据您使用的web框架,您可以使用预先存在的模块(例如Django的PAM后端,它不能完全满足您的要求,但是一个很好的起点参考)或推出自己的实现。
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- 如何实现此布局
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- 如何在OpenERP中实现网络摄像头
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- javascript加密实现,包括可信否认
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何让程序员在javascript中实现正确的回调
- 如何使用自定义辅助对象(handler)实现嵌套的每个循环
- AngularJS智能表全局配置实现
- Expressjs/AngularJS:实现req-flash后出错
- 任何人都看到过用Javascript实现crypt(3)