Files
CipherTalk/electron/services/decryptService.ts
T

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()