工具信息
名称:cryptojs 版本:1.0.1 作者:CryptoJS<>(https://code.google.com/p/crypto-js/) 下载:https://github.com/brix/crypto-js
介绍
支持的算法包括: MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2 可以单独引入所需要加密方式的js;也可以引入完整crypto-js.js,相当于引入了所有的加密算法。
引入工具`
javascript
var CryptoJS = require("cryptojs");
CryptoJS.require.Hmac(); // 需要用哪种算法就引哪种算法:需要计算HMAC值,必须引用Hmac模块。1
2
2
具体查看:https://www.npmjs.com/package/crypto-js
遇到的小问题
想要在header中添加数据,如果用JSON.stringify转换,会在header的value中带双引号,这个双引号会在后台被接收到,所以直接拼字符串就行,不用JSON.stringify
摘要算法
MD5/HmacMD5
用框架内置的MD5同样的结果
javascript
CryptoJS.require.MD5();
console.log(CryptoJS.MD5("Vinsea"))
console.log(CryptoJS.HmacMD5("Vinsea", "vera"))1
2
3
2
3
SHA1/HmacSHA1
用框架内置的MD5同样的结果
javascript
CryptoJS.require.SHA1();
console.log(CryptoJS.SHA1("Vinsea"))
console.log(CryptoJS.HmacSHA1("Vinsea", "vera"))1
2
3
2
3
SHA3/HmacSHA3
javascript
CryptoJS.require("sha3","x64-core"); //需要x64-core模块支持
console.log(CryptoJS.SHA3("Vinsea"))
console.log(CryptoJS.HmacSHA3("Vinsea", "vera"))1
2
3
2
3
SHA224/HmacSHA224
javascript
CryptoJS.require("sha224","sha256"); //需要sha256模块支持
console.log(CryptoJS.SHA224("Vinsea"))
console.log(CryptoJS.HmacSHA224("Vinsea", "vera"))1
2
3
2
3
SHA256/HmacSHA256
javascript
CryptoJS.require("sha256");
console.log(CryptoJS.SHA256("Vinsea"))
console.log(CryptoJS.HmacSHA256("Vinsea", "vera"))1
2
3
2
3
SHA384/HmacSHA384
javascript
CryptoJS.require("sha384","x64-core","sha512"); //需要x64-core、sha512模块支持
console.log(CryptoJS.SHA384("Vinsea"))
console.log(CryptoJS.HmacSHA384("Vinsea", "vera"))1
2
3
2
3
SHA512/HmacSHA512
javascript
CryptoJS.require("sha512","x64-core"); //需要x64-core模块支持
console.log(CryptoJS.SHA512("Vinsea"))
console.log(CryptoJS.HmacSHA512("Vinsea", "vera"))1
2
3
2
3
PBKDF2
javascript
CryptoJS.require.PBKDF2();
console.log(CryptoJS.PBKDF2("Vinsea", "vera", {keySize: 128/32,iterations: 10}))1
2
2
EvpKDF
javascript
CryptoJS.require.EvpKDF();
console.log(CryptoJS.EvpKDF("Vinsea", "vera", {keySize: 128/32,iterations: 10}))1
2
2
RIPEMD160
javascript
CryptoJS.require("ripemd160");
console.log(CryptoJS.RIPEMD160("Vinsea"))1
2
2
编码算法
Base64
javascript
CryptoJS.require("enc-base64");
//编码
var src = CryptoJS.enc.Utf8.parse("Vinsea");
var base64string = CryptoJS.enc.Base64.stringify(src);
console.log(base64string.toString());
//解码
var base64string = CryptoJS.enc.Base64.parse("YW5saWdl");
console.log(CryptoJS.enc.Utf8.stringify(base64string));1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
加密算法
RC4
javascript
CryptoJS.require.RC4().Format.Hex();
var key = CryptoJS.enc.Utf8.parse("password");
//加密
var srcs = CryptoJS.enc.Utf8.parse("Vinsea");
console.log(CryptoJS.RC4.encrypt(srcs, key).toString(CryptoJS.format.Hex));
//解密
var srcs = CryptoJS.enc.Hex.parse("9e9b54672b5b");
var decryptdata = CryptoJS.RC4.decrypt(
CryptoJS.lib.CipherParams.create({ ciphertext:srcs}),
key
);
//解密
console.log(decryptdata.toString(CryptoJS.enc.Utf8));1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
RabbitLegacy
javascript
CryptoJS.require.Padding().Mode();
CryptoJS.require.RabbitLegacy().Format.Hex();
var key = CryptoJS.enc.Utf8.parse("f2c20576f726c641");
var iv = CryptoJS.enc.Utf8.parse("6f726c64f2c20572");
var cfg={
iv: iv,
mode:CryptoJS.mode.CFB,
padding:CryptoJS.pad.Pkcs7,
format:CryptoJS.format.Hex
};
//加密
var srcs = CryptoJS.enc.Utf8.parse("Vinsea测试");
console.log(CryptoJS.RabbitLegacy.encrypt(srcs, key, cfg).toString(), true);
//解密
var srcs = CryptoJS.enc.Hex.parse("71d7f64fb887f384057c4798");
var decryptdata = CryptoJS.RabbitLegacy.decrypt(
CryptoJS.lib.CipherParams.create({ ciphertext:srcs}),
key,
cfg
);
console.log(decryptdata.toString(CryptoJS.enc.Utf8));1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Rabbit
javascript
CryptoJS.require.Padding().Mode();
CryptoJS.require.Rabbit().Format.Hex();
CryptoJS.require.RabbitLegacy();
var key = CryptoJS.enc.Utf8.parse("f2c20576f726c641");
var iv = CryptoJS.enc.Utf8.parse("6f726c64f2c20572");
var cfg={
iv: iv,
mode:CryptoJS.mode.CFB,
padding:CryptoJS.pad.Pkcs7,
format:CryptoJS.format.Hex
};
//加密
var srcs = CryptoJS.enc.Utf8.parse("Vinsea测试");
console.log(CryptoJS.Rabbit.encrypt(srcs, key, cfg).toString(), true);
//解密
var srcs = CryptoJS.enc.Hex.parse("fe82ea8e0d3582e60871c394");
var decryptdata = CryptoJS.RabbitLegacy.decrypt(
CryptoJS.lib.CipherParams.create({ ciphertext:srcs}),
key,
cfg
);
console.log(decryptdata.toString(CryptoJS.enc.Utf8));1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
AES
mode支持:CBC,CFB,CTR,CTRGladman,ECB,OFB padding支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7
javascript
CryptoJS.require.Padding().Mode();
CryptoJS.require.AES().Format.Hex();
var key = CryptoJS.enc.Utf8.parse("f2c20576f726c641");
var iv = CryptoJS.enc.Utf8.parse("6f726c64f2c20572");
var cfg={
iv: iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7,
format:CryptoJS.format.Hex
};
//加密
var srcs = CryptoJS.enc.Utf8.parse("Vinsea测试");
console.log(CryptoJS.AES.encrypt(srcs, key, cfg).toString(), true);
//解密
var srcs = CryptoJS.enc.Hex.parse("2783726e20d0d334520cbbbb9cd95d9b");
var decryptdata = CryptoJS.AES.decrypt(
CryptoJS.lib.CipherParams.create({ ciphertext:srcs}),
key,
cfg
);
console.log(decryptdata.toString(CryptoJS.enc.Utf8));1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DES
mode支持:CBC,CFB,CTR,CTRGladman,ECB,OFB padding支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7
javascript
CryptoJS.require.Padding().Mode();
CryptoJS.require.DES().Format.Hex();
var key = CryptoJS.enc.Utf8.parse("f2c20576f726c641");
var iv = CryptoJS.enc.Utf8.parse("6f726c64f2c20572");
var cfg={
iv: iv,
mode:CryptoJS.mode.CFB,
padding:CryptoJS.pad.Pkcs7,
format:CryptoJS.format.Hex
};
//加密
var srcs = CryptoJS.enc.Utf8.parse("Vinsea测试");
console.log(CryptoJS.DES.encrypt(srcs, key, cfg).toString(), true);
//解密
var srcs = CryptoJS.enc.Hex.parse("9e418a0562e550d0ff42dccfeb3ece64");
var decryptdata = CryptoJS.DES.decrypt(
CryptoJS.lib.CipherParams.create({ ciphertext:srcs}),
key,
cfg
);
console.log(decryptdata.toString(CryptoJS.enc.Utf8));1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
参考 http://www.thinkasp.cn/show/51.htmlhttps://www.npmjs.com/package/crypto-js