feat: 电子药箱小程序 - 4Tab药品管理

- 电子药箱: 药品库存管理 + 手动录入 + 今日用药打卡
- 药品百科: 搜索 + 分类筛选 + 20种药品静态数据
- 惠教中心: 4条药品使用指南课程
- 我的: 家庭成员信息管理
- 自定义TabBar + navigation-bar组件
- SVG药品分类插图
This commit is contained in:
陈誉午
2026-07-29 11:20:52 +08:00
commit 994b267f5c
683 changed files with 43849 additions and 0 deletions
+96
View File
@@ -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;