加密
安装:
npm install crypto-js
使用:
- ES6:
import Base64 from 'crypto-js/enc-base64' - 模块化:
var AES = require("crypto-js/aes")
src\utils\tools.ts
import md5 from 'crypto-js/md5';
import Base64 from 'crypto-js/enc-base64';
import AES from 'crypto-js/aes';
import HmacSHA256 from "crypto-js/hmac-sha256";
import Utf8 from "crypto-js/enc-utf8";
import modeECB from "crypto-js/mode-ecb";
import Pkcs7 from "crypto-js/pad-pkcs7";
import { cryptoValue, CASECRET } from "./const";
let RANDOMKEY = 0;
export function getMd5(data: string): string { ... }
export function AESEncrypt(data: string): string { ... }
export function HmacSHA256Encrypt(data: string): string { ... }
//将js对象或值转换为JSON字符串
export const jsonEncode = JSON.stringify;
//将JSON字符串解析为js对象或值
export const jsonDecode = JSON.parse;
//时间戳
export function getTimeStamp(): number { ... }
//生成uuid
export function uuid(): string { ... }
JS对象或值,与JSON字符串的相互转化:JSON.Stringify
src\utils\const.ts
//设置 HmacSHA256加密方式的密钥
export const CASECRET = 'a9d4eb7841b1ba47';
//设置 AES加密方式的密钥(十六位十六进制数)
export const cryptoValue = 'vss7db748e839799'
一、AES
//加密
export function AESEncrypt(data: string): string {
//将字符串转为128bit
let key = Utf8.parse(cryptoValue)
const cipher = AES.encrypt(data, key, {
//ECB模式没有使用iv
mode: modeECB,
padding: Pkcs7
})
return Base64.stringify(cipher)
}
二、HmacSHA256
此方法为HMAC-SHA256的签名方式,具体签名方法可以打印CryptoJS
export function HmacSHA256Encrypt(data: string): string {
//用 HmacSHA256加密后,根据需要转成 Base64格式
return Base64.stringify(HmacSHA256(data, CASECRET));
}
三、md5
JS中利用CryptoJS进行MD5/SHA256/BASE64/AES加密解密的方法与示例
export function getMd5(data: string): string {
let md5Data = md5(data)
return Base64.stringify(md5Data)
};
uuid 全局唯一标识符
UUID(Universally Unique IDentifier) 全局唯一标识符。
是一种由算法生成的二进制长度为128位的数字标识符。UUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的UUID。
export function uuid(): string {
let str = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16) + (++RANDOMKEY);
});
return str.substring(str.length - 45);
}
时间戳
export function getTimeStamp(): number {
//参数是 Date对象,则 Number()函数返回自UTC 1970年1月1日开始以来的毫秒数
return Number(new Date())
}