前言: 公司业务需要使用iTalk,因涉及敏感信息(手机号码)需要加密传输,因此再此学习记录。
直接上干货
如何使用
下载安装
npm install crypto-js --save-dev
yarn add crypto-js --dev
// 或者下载js文件https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js
ATS
import CryptoJS from ‘crypto-js/crypto-js.js’
创建一个加密函数
export function enterpassword(key, iv, password) {
key = CryptoJS.enc.Utf8.parse(key) //在引入CryptoJS时,初始化密钥(key)与偏移量(iv)的时候,必须对其进行转码,不然会报错,报错的原因可能是iv为undefined?
iv = CryptoJS.enc.Utf8.parse(iv)
var encryptedData = CryptoJS.AES.encrypt(password, key, {
iv: iv,
mode: CryptoJS.mode.CBC,//这是AES加密的模式,常用的有ECB,CBC等
padding: CryptoJS.pad.Pkcs7//填充模式,加密位数不够的时候填充方式
});
var encryptedBase64Str = encryptedData.toString(); //encryptedData为一个对象,需要将其进行tostring,转化成字符串才是我们需要的值
return (encryptedBase64Str)
}
创建一个解密函数
export function outpassword(key, iv, password) {
key = CryptoJS.enc.Utf8.parse(key)
iv = CryptoJS.enc.Utf8.parse(iv)
//这里可以不用对解密参数进行转码!!直接拿过来用
var decryptedata = CryptoJS.AES.decrypt(password, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
decryptedata = decryptedata.toString(CryptoJS.enc.Utf8)//转化出来的参数为一个对象,还是要给他转化成String类型的字符串,CryptoJS.enc.Utf8为转化成utf-8编码格式的字符串形式,不然看不懂!
console.log(decryptedata)
}
MD5
var hash = CryptoJS.MD5("Message");
base64
字符串 转 base64
要将文本字符串(UTF-8 编码) 转换为base-64 字符串:
var textString = 'Hello world'; // Utf8-encoded string
var words = CryptoJS.enc.Utf8.parse(textString); // WordArray object
var base64 = CryptoJS.enc.Base64.stringify(words); // string: 'SGVsbG8gd29ybGQ='
base64 转 字符串
要将一个base-64 编码的字符串 变回文本(UTF-8 编码):
var base64 = 'SGVsbG8gd29ybGQ=';
var words = CryptoJS.enc.Base64.parse(base64);
var textString = CryptoJS.enc.Utf8.stringify(words); // 'Hello world'