mirror of
https://github.com/ILoveBingLu/CipherTalk.git
synced 2026-05-17 17:58:54 +08:00
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { nativeDecryptService } from './nativeDecryptService'
|
|
|
|
/**
|
|
* 微信数据库解密服务 (Windows v4)
|
|
* 纯原生 DLL 实现封装
|
|
*/
|
|
export class WeChatDecryptService {
|
|
|
|
/**
|
|
* 验证密钥是否正确
|
|
* 目前未实现单独的验证逻辑,依赖解密过程中的验证
|
|
*/
|
|
validateKey(dbPath: string, hexKey: string): boolean {
|
|
return true
|
|
}
|
|
|
|
/**
|
|
* 解密数据库
|
|
* 使用原生 DLL 解密(高性能、异步不卡顿)
|
|
*/
|
|
async decryptDatabase(
|
|
inputPath: string,
|
|
outputPath: string,
|
|
hexKey: string,
|
|
onProgress?: (current: number, total: number) => void
|
|
): Promise<{ success: boolean; error?: string }> {
|
|
|
|
// 检查服务是否可用
|
|
if (!nativeDecryptService.isAvailable()) {
|
|
return { success: false, error: '原生解密服务不可用:DLL 加载失败或 Worker 未启动' }
|
|
}
|
|
|
|
try {
|
|
// console.log(`[Decrypt] 开始解密: ${inputPath} -> ${outputPath}`) // 减少日志
|
|
|
|
// 使用异步 DLL 解密
|
|
const result = await nativeDecryptService.decryptDatabaseAsync(inputPath, outputPath, hexKey, onProgress)
|
|
|
|
if (result.success) {
|
|
// console.log('[Decrypt] 解密成功') // 减少日志
|
|
return { success: true }
|
|
} else {
|
|
console.warn(`[Decrypt] 解密失败: ${result.error}`)
|
|
return { success: false, error: result.error }
|
|
}
|
|
} catch (e) {
|
|
console.error('[Decrypt] 调用异常:', e)
|
|
return { success: false, error: String(e) }
|
|
}
|
|
}
|
|
}
|
|
|
|
export const wechatDecryptService = new WeChatDecryptService()
|