Files
陈誉午 994b267f5c feat: 电子药箱小程序 - 4Tab药品管理
- 电子药箱: 药品库存管理 + 手动录入 + 今日用药打卡
- 药品百科: 搜索 + 分类筛选 + 20种药品静态数据
- 惠教中心: 4条药品使用指南课程
- 我的: 家庭成员信息管理
- 自定义TabBar + navigation-bar组件
- SVG药品分类插图
2026-07-29 11:20:52 +08:00

96 lines
2.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;