All Projects → EtherDream → Webscrypt

EtherDream / Webscrypt

a fast and lightweight scrypt hash algorithm for browser

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Webscrypt

Squark
Rust frontend framework, for web browser and more.
Stars: ✭ 162 (+12.5%)
Mutual labels:  emscripten, asmjs
Yew
Yew is a modern Rust framework for creating multi-threaded front-end web apps with WebAssembly.
Stars: ✭ 18,243 (+12568.75%)
Mutual labels:  emscripten, asmjs
Nbind
✨ Magical headers that make your C++ library accessible from JavaScript 🚀
Stars: ✭ 1,829 (+1170.14%)
Mutual labels:  emscripten, asmjs
dcraw.js
Generated JavaScript executable code from dcraw.c
Stars: ✭ 14 (-90.28%)
Mutual labels:  emscripten, asmjs
Securityworker
The best javascript code protection solution ever.
Stars: ✭ 626 (+334.72%)
Mutual labels:  emscripten, asmjs
Emscripten Docker
Docker image with Emscripten to compile ASM.js and WebAssembly
Stars: ✭ 92 (-36.11%)
Mutual labels:  emscripten, asmjs
Dcmjs
dcmjs is a javascript cross-compile of dcmtk (dcmtk.org).
Stars: ✭ 92 (-36.11%)
Mutual labels:  emscripten, asmjs
TypeScriptXX
🧷 Stay safe! Type-safe scripting for C++ using TypeScriptToLua and CMake with auto-generated declarations.
Stars: ✭ 33 (-77.08%)
Mutual labels:  emscripten, asmjs
Stdweb
A standard library for the client-side Web
Stars: ✭ 3,201 (+2122.92%)
Mutual labels:  emscripten, asmjs
Cargo Web
A Cargo subcommand for the client-side Web
Stars: ✭ 1,026 (+612.5%)
Mutual labels:  emscripten, asmjs
Modern Wasm Starter
🛸 Run C++ code on web and create blazingly fast websites! A starter template to easily create WebAssembly packages using type-safe C++ bindings with automatic TypeScript declarations.
Stars: ✭ 140 (-2.78%)
Mutual labels:  emscripten, asmjs
Hello imgui
Hello, Dear ImGui: cross-platform Gui apps for Windows / Mac / Linux / iOS / Android / Emscripten with the simplicity of a "Hello World" app
Stars: ✭ 120 (-16.67%)
Mutual labels:  emscripten
Webassembly Raytracer
a performance comparison of a simple raytracer in JavaScript, asm.js, WebAssembly, and GLSL
Stars: ✭ 102 (-29.17%)
Mutual labels:  emscripten
Cobol Js Emscripten
Stars: ✭ 101 (-29.86%)
Mutual labels:  emscripten
Fugacious
OSSSM (awesome). Open source short-term secure messaging
Stars: ✭ 100 (-30.56%)
Mutual labels:  password-safety
Passpwn
See if your passwords in pass has been breached.
Stars: ✭ 130 (-9.72%)
Mutual labels:  password-safety
Opengl cmake skeleton
❤️ A ready to use cmake skeleton using GLFW, Glew and glm. 👍
Stars: ✭ 118 (-18.06%)
Mutual labels:  emscripten
Jsemu
A list of emulators written in the JavaScript programming language
Stars: ✭ 1,342 (+831.94%)
Mutual labels:  emscripten
Assortedwidgets
OpenGL GUI library
Stars: ✭ 92 (-36.11%)
Mutual labels:  emscripten
Quiet Js
Transmit data with sound using Web Audio -- Javascript binding for libquiet
Stars: ✭ 1,725 (+1097.92%)
Mutual labels:  emscripten

WebScrypt

一个浏览器版的 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 计算,不仅分担了后端压力,还能让原始口令数据更早消失,从而减少泄露环节,例如网络被窃听、服务端恶意程序等。

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

API

演示

如何用到我的项目中?

更新中...

各种浏览器的性能对比

更新中...

其他的前端 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)

探讨

探讨一些前端技术、隐私安全相关的话题。

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].