js前端数据加密插件
(2014-11-14 15:37:35)
摘要:
大部分动态网站都支持从客户端到服务器传递数据,如果传递的数据被别人截取就非常危险,尤其是一些用户名密码之类的。这时候就需要我们在传递数据之前对数据进行加密。现在的加密算法已经有很多了,例如:MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC等等。下面分享几款前端加密的插件。
- braintree.js
它是设计用于与客户端的库。加密库将数据(通常是在一个移动设备或merchant-hosted网站通过表单提交)和加密使用非对称密钥对的公钥提交。在服务器上,使用客户端发送加密数的公钥。1 var clientSideEncryptionKey = "YOUR_ENCRYPTION_KEY";
2 var braintree = Braintree.create(clientSideEncryptionKey);
3 $(#transaction_form).submit(function() {
4 encryptedForm().submit();
5 return false;
6 }); - BurningPig-encryption
使用RSA算法进行加密1 var rsa = require("./src/rsa.js");
2 var key = new rsa.Key();
3
4 var message = "All your bases are belong to us.";
5 console.log("Message:\n"+message+"\n");
6
7 // Generate a key
8 key.generate(1024, "10001");
9 console.log("Key:\n");
10 console.log("n:" + key.n.toString(16));
11 console.log("e:" + key.e.toString(16));
12 console.log("d:" + key.d.toString(16));
13 console.log("\n");
14
15 // Encrypt
16 var encrypted = key.encrypt(message);
17 console.log("Encrypted:\n" + rsa.linebrk(encrypted, 64) + "\n" );
18
19 // Decrypt
20 var decrypted = key.decrypt(encrypted);
21 console.log("Decrypted:" + rsa.linebrk(decrypted, 64) + "\n");
22
23 var sig = key.signString(message, "sha256");
24 console.log("String signature: \n" + rsa.linebrk(sig, 64));
25
26 var pubkey = new rsa.Key();
27 pubkey.n = key.n;
28 pubkey.e = key.e;
29
30 var verified = pubkey.verifyString(message, sig);
31
32 console.log("Verfied: " + verified); - MD5
项目中使用的就是这个插件。1 // quick test
2 var input1 = "ABC";
3 var input2 = ["A","B","C"];
4 var input3 = [0x41, 0x42, 0x43];
5 alert(faultylabs.MD5(input1) == "902FBDD2B1DF0C4F70B4A5D23525E932");
6 alert(faultylabs.MD5(input2) == "902FBDD2B1DF0C4F70B4A5D23525E932");
7 alert(faultylabs.MD5(input3) == "902FBDD2B1DF0C4F70B4A5D23525E932");
8
9 // ArrayBuffer
10 var abuf = new ArrayBuffer(3)
11 var vu8 = new Uint8Array(abuf)
12 vu8[0] = 0x41; vu8[1] = 0x42; vu8[2] = 0x43
13 alert(faultylabs.MD5(abuf) == "902FBDD2B1DF0C4F70B4A5D23525E932")
14
15 // Typed Array Uint32Array
16 var au32 = new Uint32Array(1)
17 au32[0] = 0xDDCCBBAA
18 alert(faultylabs.MD5(au32) == "CA6FFBF95B47864FD4E73F2601326304") - crypto.js
是一个综合的库,包含很多算法,MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF21 var CryptoJS = require("crypto-js");
2 console.log(CryptoJS.HmacSHA1("Message", "Key")); - sjcl
1 sjcl.encrypt("password", "data")
2 sjcl.decrypt("password", "encrypted-data") - jcryption
在正常情况下,当提交数据时,如果没有SSL数据将使用纯文本的方式发送。jCryption这个jQuery插件能够加密由Forms提交的POST/GET数据。jCryption使用RSA公钥密码算法加密,该项目还提供一个PHP文件来处理数据的解密。1 $(function() {
2 $("form").jCryption();
3 }); - jshashes
jshashes是一个纯JavaScript实现的扩展散列算法。它的目标是提供一个独立的、快速和简单的散列算法解决方案对客户端和服务器端都是JavaScript环境的。包括算法:MD5,SHA-1,SHA-256,SHA-512,HMAC,RIPEMD-1601 // new MD5 instance
2 var MD5 = new Hashes.MD5;
3 // new SHA1 instance
4 var SHA1 = new Hashes.SHA1;
5 // new SHA256 instance
6 var SHA256 = new Hashes.SHA256;
7 // new SHA512 instace
8 var SHA512 = new Hashes.SHA512;
9 // new RIPEMD-160 instace
10 var RMD160 = new Hashes.RMD160;
11 // sample string
12 var str = 'Sample text!';
13 // output to console
14 console.log('MD5: ' + MD5.hex(str));
15 console.log('SHA1: ' + SHA1.hex(str));
16 console.log('SHA256: ' + SHA256.hex(str));
17 console.log('SHA512: ' + SHA512.hex(str));
18 console.log('RIPEMD-160: ' + RMD160.hex(str));
小结:
网上也有很多关于数据加密的,大部分思路是使用非对称加密方法,如果你有好的方法可以多多交流。
另外附上两个在node.js环境上加密解密的插件:
https://github.com/gwjjeff/cryptojs
https
js前端数据加密插件的更多相关文章
- 最好用的js前端框架、组件、文档在线预览插件
这里收集的都是个人认为比较好的js框架.组件 js前端ui框架 此处列举出个人认为最好的几个框架(排序即排名),现在好点的框架商用都需要付费,以下几个也不例外,但是由于组件丰富,都可以作为企业应用的完 ...
- JS前端图形化插件之利器Gojs组件(php中文网)
JS前端图形化插件之利器Gojs组件(php中文网) 一.总结 一句话总结:php中文网我可以好好走一波 二.JS前端图形化插件之利器Gojs组件 参考: JS前端图形化插件之利器Gojs组件-js教 ...
- 【QRcode二维码】:使用JS前端插件QRcode.js生成二维码
1.先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcode 获取), qrcode.js 是实现二 ...
- Sublime编辑器 前端 必备插件
sublime编辑器前端必备插件 下面这一行是Package Control包安装,它是sublime的插件包管理器.新安装的sublime 里没有Package Control,按一下ctrl+~, ...
- VSCode 前端必备插件
VSCode 前端必备插件 Debugger for Chrome 让 vscode 映射 chrome 的 debug功能,静态页面都可以用 vscode 来打断点调试 { "versio ...
- 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态
jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...
- 第一百八十三节,jQuery-UI,知问前端--验证插件
jQuery-UI,知问前端--验证插件 学习要点: 1.使用 validate.js 插件 2.默认验证规则 3.validate()方法和选项 4.validate.js 其他功能 验证插件(va ...
- Jquery前端分页插件pagination同步加载和异步加载
上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...
- Fundebug前端JavaScript插件更新至1.8.2,修复2个小BUG
摘要: 修复2个BUG,请大家及时更新. Fundebug前端异常监控服务 Fundebug是专业的程序异常监控平台,我们JavaScript插件可以提供全方位的异常监控,可以帮助开发者第一时间定位各 ...
随机推荐
- [NOI2006]网络收费
题面在这里 description 一棵\(2^n\)个叶节点的满二叉树,每个节点代表一个用户,有一个预先的收费方案\(A\)或\(B\); 对于任两个用户 \(i,j(1≤i<j≤2^n)i, ...
- 20165218 预备作业3 Linux安装及学习
Linux安装及学习 第二节 基本概念及操作 1. 关于图形界面 Linux本身是没有图形界面的,对于初学者来说,这或许是其与Windows系统最直观的差别.Linux所呈现给用户的实际上是一个实现图 ...
- 51nod 1962 区间计数(单调栈+二分)
维护两个单调递减的栈,当i加进栈,位置x的数弹出的时候,在另一个栈中找到和这个数一样大的数,计算贡献(x-靠右左端点)*(i-x). #include<iostream> #include ...
- 理清一下JavaScript面向对象思路
借这篇文章理清一下自己的思路,同时也希望能给和我同样一知半解的同学理清一下思路.引发思考来自于我犯的一个错误,错误代码是这样的: 1 var o = { 2 ... 3 } 4 var obj ...
- 基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)
界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+ThinkJS+MySQL 计划添加基于Vue.js的后台管 ...
- SpringMVC源码解析-DispatcherServlet启动流程和初始化
在使用springmvc框架,会在web.xml文件配置一个DispatcherServlet,这正是web容器开始初始化,同时会在建立自己的上下文来持有SpringMVC的bean对象. 先从Dis ...
- 基于DCT系数的实时监控中运动目标检测
本文的主要内容来自2009 Advanced Video and Signal Based Surveillance会议的一篇论文“Real-Time Moving Object Detection ...
- SSO解决session共享的几种方案
之前做项目遇到了这个sso系统,当时只是理解了一部分,今天偶尔发现一篇文章,觉得写的不错,增加了sso知识: 单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用, ...
- Tomcat 映射虚拟目录和程序热部署
虚拟目录的设置 方法一:在${tomcat安装目录}/conf/Catalina/localhost目录下创建一个xml文件,任意文件名都可以,但是此文件名是web应用发布后的虚拟目录: 比如创建一个 ...
- [Luogu 4092] HEOI/TJOI2016 树
[Luogu 4092] HEOI/TJOI2016 树 搜了树剖标签不知道怎么就跳出了个暴搜题啊! 管他既然做了就发上来吧- 有修改标签就向下搜并修改,遇到标签即停止. 这题是真的真的短. #inc ...