文档章节

JavaScript加密库Crypto-JS的使用

王振威
 王振威
发布于 2012/07/30 15:13
字数 703
阅读 32820
收藏 25

先来图片一张,看看效果(一个采用Crypto-JS实现的工具展示):

CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。目前已支持的算法包括:

  • MD5
  • SHA-1
  • SHA-256
  • AES
  • Rabbit
  • MARC4
  • HMAC
    • HMAC-MD5
    • HMAC-SHA1
    • HMAC-SHA256
  • PBKDF2
散列/哈希

CryptoJS是一个纯javascript写的加密类库(下载),我们使用它只需要加入相关的引用即可:

散列/哈希示例1:

<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/components/core-min.js"></script>
<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/rollups/md5.js"></script>
<script type="text/javascript">

  alert("你好,欢迎来到开源中国在线工具,这是一个MD5测试 MD5:"+CryptoJS.MD5("你好,欢迎来到开源中国在线工具,这是一个MD5测试"));
  
</script>

点此编辑代码并查看执行效果

上面就一行代码就可以轻松搞定一个MD5的哈希,使用非常方便。

同样,如果你想进行sha1、sha256等等诸多哈希算法,只需要引入相关的库就行了。

对于 HMAC-sha1 HMAC-sha256、HMAC-md5等,用法是这样:

散列/哈希示例2

<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/components/core-min.js"></script>
<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/rollups/hmac-md5.js"></script>
<script type="text/javascript">
  var pwd="password";
  alert("你好,欢迎来到开源中国在线工具,这是一个MD5测试 Hmac-MD5:   "+CryptoJS.HmacMD5("你好,欢迎来到开源中国在线工具,这是一个MD5测试",pwd));
  
</script>

点此编辑代码并查看执行效果

PBKDF2哈希算法

这里将PBKDF2算法单独列出来,是因为他稍有不同,看如下代码:

散列/哈希示例3

<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/components/core-min.js"></script>
<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/rollups/pbkdf2.js"></script>
<script type="text/javascript">
  
  var salt=CryptoJS.enc.Utf8.parse("salt");  //盐
  
  var iter=1000;  //迭代次数
  
  var mi=CryptoJS.PBKDF2("你好,欢迎来到开源中国在线工具,这是一个PBKDF2测试", salt,
			{ keySize: parseInt(4),
			iterations: parseInt(iter) }
			);
 
  alert("你好,欢迎来到开源中国在线工具,这是一个PBKDF2测试:----------哈希值:"+mi);
  
</script>

点此编辑代码并查看执行效果

加密/解密

加密解密示例1:

<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/components/core-min.js"></script>
<script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/rollups/aes.js"></script>
<script type="text/javascript">
  var pwd="我的密码";
  
  var mi=CryptoJS.AES.encrypt("你好,欢迎来到开源中国在线工具,这是一个AES加密测试",pwd);
  alert("你好,欢迎来到开源中国在线工具,这是一个AES加密测试----密文:"+mi);
  
  var result=CryptoJS.AES.decrypt(mi,pwd).toString(CryptoJS.enc.Utf8);
  
  alert("解密结果:"+result);
  
</script>

点此编辑代码并查看执行效果

同样的,几种加密算法的使用方法都比较类似,需要使用哪个引入相关的js文件就ok了。

这里的在线加密/解密,散列/哈希工具是使用这个库构建的:http://www.osctools.net/encrypt

© 著作权归作者所有

共有 人打赏支持
王振威

王振威

粉丝 502
博文 28
码字总数 20820
作品 0
深圳
程序员
私信 提问
加载中

评论(6)

爱笑的胖子
小程序可以引入吗
zhuganlai
zhuganlai
mark
Skqing
Skqing
前台这样加密
var account = $("#account").val();
var password = $("#password").val();
var pwdmd5 = CryptoJS.MD5(password);
var md5str = pwdmd5.toString();
console.log("加密盐:"+md5str);
var ciphertext = CryptoJS.AES.encrypt(account, md5str);
$("#ciphertext").val(ciphertext);

后台解密的时候报错:
Exception in thread "main" java.lang.NumberFormatException: For input string: "U"
  at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
  at java.lang.Integer.parseInt(Integer.java:492)
  at com.cloudwave.fwcore.utils.security.AesEncrypt.parseHexStr2Byte(AesEncrypt.java:241)
  at com.cloudwave.fwcore.utils.security.AesEncrypt.main(AesEncrypt.java:269)
riverpot
riverpot
谢谢,正好用上了。
异常爱
异常爱
感谢楼主,非常有用的~
李其生
李其生
很有用,学习了
Crypto-JS AES 加密 java后台怎么解密

nodeJs运用Crypto-JS aes加密 ,java取到怎么解 ?java 用aes加密出来的与Crypto-JS 加密的串不一样?

代码诗人
2017/12/28
437
4
RSA加密过的表单密码用python怎么模拟?

比如这个页面: http://ec.iot.10086.cn 可以看到页面中的JS有这样一段 很显然这个密码是用RSA算法加密之后再提交表单的。 而且貌似用的是这个开源的JS库:http://www.ohdave.com/rsa/ 想用p...

Feng_Yu
2014/06/17
953
2
JS异步上传压缩图片,并立即显示图片。

感谢 think2011 这位兄台的JS库:https://github.com/think2011/LocalResizeIMG 先看调用页面: <!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=de......

zerodeng
2015/11/05
0
0
python3调用js的库之execjs

针对现在大部分的网站都是使用js加密,js加载的,并不能直接抓取出来,这时候就不得不适用一些三方类库来执行js语句 执行JS的类库:execjs,PyV8,selenium,node 这里主要讲一下execjs,一个...

徐代龙
2018/08/24
0
0
国密算法SM2,SM3,SM4前端js库开发

国密算法SM2,SM3,SM4前端js库开发: 1、 基于国密算法规范,将国密算法标准开发成一个js算法包,使其与bouncy castle(1.58) 版本中的国密保持一致。即:前端后端加解密内容一致,前端js加密...

liusha_0302
2017/10/26
2
0

没有更多内容

加载失败,请刷新页面

加载更多

c++ 定义新的异常

#include <iostream> #include <exception> using namespace std; struct MyException : public exception { const char * what () const throw () { return "C++ Exception"; } }; int main......

天王盖地虎626
20分钟前
0
0
PDMan-2.1.1 发布:用心开源,免费的国产数据库建模工具(春节前最后一个版本)

一、软件介绍 PDMan 是一款开源免费的数据库模型建模工具,是PowerDesigner之外另一种更好的选择。支持Windows,Mac,Linux等操作系统,具有上手容易,使用简单的特点。 2018年获得码云GVP (Gi...

O龙猫O
45分钟前
8
0
OSChina 周二乱弹 —— 以后我偷小鱼干养你

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @庞巴哥 :只有这节奏瞬间变得轻松。。。。。。。。。分享Talking Eyes的单曲《In the sun (Extended Version)》: 《In the sun (Extended Ve...

小小编辑
今天
45
5
多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
8
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部