JS生成uuid、使用CryptoJS加密

1,555 阅读2分钟

加密

安装: 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

前端加密JS库--CryptoJS 使用指南

使用CryptoJS进行AES加密

crypto-js 加密、解密使用方法

理解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

使用 crypto.js 进行md5、base64加密

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。

JS生成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);
}

时间戳

在JavaScript中时间戳

export function getTimeStamp(): number {
//参数是 Date对象,则 Number()函数返回自UTC 1970年1月1日开始以来的毫秒数
    return Number(new Date())
}