feat: 电子药箱小程序 - 4Tab药品管理
- 电子药箱: 药品库存管理 + 手动录入 + 今日用药打卡 - 药品百科: 搜索 + 分类筛选 + 20种药品静态数据 - 惠教中心: 4条药品使用指南课程 - 我的: 家庭成员信息管理 - 自定义TabBar + navigation-bar组件 - SVG药品分类插图
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
import CryptoJS from 'crypto-js';
|
||||
|
||||
/**
|
||||
* MD5 哈希
|
||||
* @param str 待加密字符串
|
||||
*/
|
||||
export function md5(str: string): string {
|
||||
return CryptoJS.MD5(str).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA256 哈希
|
||||
* @param str 待加密字符串
|
||||
*/
|
||||
export function sha256(str: string): string {
|
||||
return CryptoJS.SHA256(str).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA1 哈希
|
||||
* @param str 待加密字符串
|
||||
*/
|
||||
export function sha1(str: string): string {
|
||||
return CryptoJS.SHA1(str).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64 编码
|
||||
* @param str 待编码字符串
|
||||
*/
|
||||
export function base64Encode(str: string): string {
|
||||
const wordArray = CryptoJS.enc.Utf8.parse(str);
|
||||
return CryptoJS.enc.Base64.stringify(wordArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Base64 解码
|
||||
* @param str 待解码 Base64 字符串
|
||||
*/
|
||||
export function base64Decode(str: string): string {
|
||||
const wordArray = CryptoJS.enc.Base64.parse(str);
|
||||
return CryptoJS.enc.Utf8.stringify(wordArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* AES 加密(CBC 模式,PKCS7 填充)
|
||||
* @param data 待加密数据
|
||||
* @param key 密钥
|
||||
* @param iv 偏移量
|
||||
*/
|
||||
export function aesEncrypt(
|
||||
data: string,
|
||||
key: string,
|
||||
iv: string,
|
||||
): string {
|
||||
const keyWordArray = CryptoJS.enc.Utf8.parse(key);
|
||||
const ivWordArray = CryptoJS.enc.Utf8.parse(iv);
|
||||
const encrypted = CryptoJS.AES.encrypt(data, keyWordArray, {
|
||||
iv: ivWordArray,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7,
|
||||
});
|
||||
return encrypted.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* AES 解密(CBC 模式,PKCS7 填充)
|
||||
* @param encryptedData 密文(Base64)
|
||||
* @param key 密钥
|
||||
* @param iv 偏移量
|
||||
*/
|
||||
export function aesDecrypt(
|
||||
encryptedData: string,
|
||||
key: string,
|
||||
iv: string,
|
||||
): string {
|
||||
const keyWordArray = CryptoJS.enc.Utf8.parse(key);
|
||||
const ivWordArray = CryptoJS.enc.Utf8.parse(iv);
|
||||
const decrypted = CryptoJS.AES.decrypt(encryptedData, keyWordArray, {
|
||||
iv: ivWordArray,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7,
|
||||
});
|
||||
return CryptoJS.enc.Utf8.stringify(decrypted);
|
||||
}
|
||||
|
||||
/**
|
||||
* HMAC-SHA256 签名
|
||||
* @param data 待签名数据
|
||||
* @param key 密钥
|
||||
*/
|
||||
export function hmacSha256(data: string, key: string): string {
|
||||
return CryptoJS.HmacSHA256(data, key).toString();
|
||||
}
|
||||
|
||||
export default CryptoJS;
|
||||
Reference in New Issue
Block a user