/** * 密码哈希工具 * 使用 SHA-256 算法对密码进行哈希处理 */ /** * 使用 SHA-256 对字符串进行哈希处理 * @param text 要哈希的文本 * @returns 哈希后的十六进制字符串 */ export async function sha256(text: string): Promise { const encoder = new TextEncoder(); const data = encoder.encode(text); const hashBuffer = await crypto.subtle.digest("SHA-256", data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray .map((b) => b.toString(16).padStart(2, "0")) .join(""); return hashHex; } /** * 哈希密码 * @param password 原始密码 * @returns 哈希后的密码 */ export async function hashPassword(password: string): Promise { // 添加前缀盐值增加安全性 const saltedPassword = `share_${password}_chat`; return sha256(saltedPassword); } /** * 验证密码 * @param password 用户输入的密码 * @param storedHash 存储的哈希值 * @returns 是否匹配 */ export async function verifyPassword( password: string, storedHash: string ): Promise { const hash = await hashPassword(password); return hash === storedHash; }