UNPKG

@perfylee/crypto

Version:

encryption module used in project

75 lines (69 loc) 1.91 kB
import CryptoJS from 'crypto-js' /** * MD5加密 * @param input 原文 * @returns 字母小写 */ export const md5 = (input: string): string => { return CryptoJS.MD5(input).toString().toLowerCase() } /** * TripleDES加解密 */ export const tripleDES = { /** * 加密 * @param input 原文 * @param key 密钥(长度24的字符串的base64编码) * @returns 字母小写 */ encrypt: (input: string, key: string): string => { const encrypted = CryptoJS.TripleDES.encrypt( input, CryptoJS.enc.Base64.parse(key), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 } ).toString() return CryptoJS.enc.Base64.parse(encrypted).toString().toLowerCase() }, /** * 解密 * @param input 密文 * @param key 密钥(长度24的字符串的base64编码) * @returns */ decrypt: (input: string, key: string): string => { const decrypted = CryptoJS.TripleDES.decrypt( CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(input)), CryptoJS.enc.Base64.parse(key), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, } ) return decrypted.toString(CryptoJS.enc.Utf8) } } /** * Base64 */ export const base64 = { /** * 编码 * @param input 原文 * @returns 字母小写 */ parse: function (input: string): string { return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(input)) }, /** * 解码 * @param input Base64密文 * @returns */ stringify: function (input: string): string { return CryptoJS.enc.Base64.parse(input).toString(CryptoJS.enc.Utf8) } }