@perfylee/crypto
Version:
encryption module used in project
75 lines (69 loc) • 1.91 kB
text/typescript
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)
}
}