WebScrypt

浏览器版的 scrypt 算法
授权协议 MIT
开发语言 JavaScript
所属分类 Web应用开发、 常用JavaScript包
软件类型 开源软件
地区 国产
投 递 者 冉弘化
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

一个浏览器版的 scrypt 算法,性能高、体积小。

scrypt 简介

scrypt 是一种密码学 Hash 函数,专门用于 Hash 口令。

不同于 PBKDF2、bcrypt 只有时间成本,scrypt 还可设定空间成本,该特征能使 GPU 等硬件设备破解 Hash 时瓶颈出现在内存上,从而降低硬件的计算优势。

另外 scrypt 支持并发维度,可充分利用多线程提高工作量,使破解时间成倍增加。详细讲解

前端计算

口令 Hash 函数的计算成本,决定了暴力破解的难度。但过高的成本,也会给服务器带来压力。因此通常只能在性能和安全之间折中。

事实上,口令 Hash 完全可在前端计算 —— 账号注册时,提交口令的 Hash 值(通常称之 DK);登录时,如果提交的 DK 相同,即可证明口令是相同的。

// REG or LOGIN
dk = scrypt(password, username, cost ...)

submit(username, dk, ...)

前端高成本 Hash 计算,不仅分担了后端压力,还能让原始口令数据更早消失,从而减少泄露环节,例如网络被窃听、服务端恶意程序等。

这就是本项目的初衷:在不增加网站基础设施的前提下,大幅提升账号口令安全。

其他的前端 scrypt 库

project ver asm.js flash purejs thread progress size (gzip -6)
WebScrypt latest ✔️ 2KB + 10KB / 54KB
js-scrypt 1.2.0 384KB
scrypt-async-js 1.3.0 3KB

备注:54KB 的是 flash.swf 文件,只有低版本浏览器才会使用

单线程性能

多线程性能

测试环境:Chrome56、OSX 10.11.6、MacBookPro 2013(2 GHz Intel Core i7,8 GB 1600 MHz DDR3)

 相关资料
  • 本文向大家介绍js判断浏览器版本以及浏览器内核的方法,包括了js判断浏览器版本以及浏览器内核的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js判断浏览器版本以及浏览器内核的方法。分享给大家供大家参考。具体实现方法如下: js判断是否移动端及浏览器内核 代码二 希望本文所述对大家的javascript程序设计有所帮助。

  • 我在Ubuntu Server中设置了一个Selenium Grid,在Ubuntu Desktop中设置了一个Hub,在Ubuntu Desktop中设置了一个Node。Node上的GoogleChrome版本是。我创建会话的python代码是 但是当我传递时,它会出错 硒。常见的例外情况。WebDriverException:消息:转发新会话时出错,找不到:功能{browserName:chr

  • 本文向大家介绍javascript 获取浏览器版本,包括了javascript 获取浏览器版本的使用技巧和注意事项,需要的朋友参考一下 工作中需要通过JS去获取当前使用的浏览器的名字以及版本号,网上大堆资料都有一个关键词是 navigator.appName,但是这个方法获取的浏览器的名字只有两种要么是IE要么就是Netscap,倒是可以用来判断是否使用了IE,但是我想获取具体的浏览器产品名字比如

  • 浏览器工作原理。 目录 排版引擎 ​渲染​ JavaScript 引擎 ​并发模型​ ​内存管理​ ​执行环境​ 网络通信 ​缓存​ ​Cookie​ ​跨源资源共享​ 安全 ​同源策略​ Web APIs ​事件​ ​存储​ ​定时器​ ​Fetch​ 文档操作 数据通信 图形处理 音视频处理

  • 设计开发的页面与网站需要在浏览器上预览与调试。推荐使用 Chrome 浏览器。 Chrome Safari Firefox Edge(IE)

  • 可浏览互联网Web网页的应用程序。 浏览器的LiveArea™ 浏览Web网页 开启更多窗口 使用书签及历史记录 设定浏览器 上传