使用 crypto-js 对数据进行对称加密
2018-04-27 本文已影响2153人
yonglei_shang
npm install crypto-js
要用AES
算法加密,首先我们要引入crypto-js
,crypto-js
是一个纯javascript
写的加密算法类库 ,可以非常方便地在javascript
进行MD5
、SHA1
、SHA2
、SHA3
、RIPEMD-160
哈希散列,进行AES
、DES
、Rabbit
、RC4
、Triple DES
加解密
demo1
// 加载核心加密库
var CryptoJS = require("crypto-js");
// 加载des算法
var tripledes = require("crypto-js/tripledes");
// 开始加密,并且返回密文
var ciphertext = tripledes.encrypt("fuckyou", '123').toString();
// 解密
var plaintext = tripledes.decrypt(ciphertext, '123').toString(CryptoJS.enc.Utf8)
// 输出密文和解密后的内容
console.log(ciphertext, plaintext)
demo2 DES加密
// 加载核心加密库
var CryptoJS = require("crypto-js");
function encrypt (message, key) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return {
key: keyHex,
value: encrypted.toString()
}
}
function decrypt (message, key) {
var plaintext = CryptoJS.DES.decrypt(message, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
return plaintext.toString(CryptoJS.enc.Utf8)
}
var a = encrypt('mssage123', '123');
var b = decrypt(a.value, a.key);
console.log(a.value.length)
demo3 AES加密
const CryptoJS = require('crypto-js'); //引用AES源码js
const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量
//解密方法
function Decrypt(word) {
let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
//加密方法
function Encrypt(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
return encrypted.ciphertext.toString().toUpperCase();
}
export default {
Decrypt ,
Encrypt
}
其他
CryptoJS.MD5("Message")
CryptoJS.SHA1("Message")
CryptoJS.SHA256("Message")
var hash1 = CryptoJS.HmacMD5("Message", "Secret Passphrase");
var hash2 = CryptoJS.HmacSHA1("Message", "Secret Passphrase");
var hash3 = CryptoJS.HmacSHA256("Message", "Secret Passphrase");
var hash4 = CryptoJS.HmacSHA512("Message", "Secret Passphrase");