恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

硬编码密钥、固定IV:Navicat的“加密“为何形同虚设?how-does-navicat-encrypt-password安全审查报告

  • 首页
  • 资讯中心
  • /
  • 硬编码密钥、固定IV:Navicat的“加密“为何形同虚设?how-does-navicat-encrypt-password安全审查报告

相关资讯

数学建模实战:从分形树到光照优化,解析MCM树叶问题 2026/8/24 10:47:19
随机森林原理与实战:从决策树到集成学习的机器学习利器 2026/8/24 10:47:19
自动驾驶多传感器多智能体数据集构建:挑战、路径与学习范式演进 2026/8/24 10:47:18

最新资讯

Codex 开启 1M 上下文窗口完整教程:手动配置 + 一键脚本
长白岛孩子驼背送去练武术管用吗
聊聊后端接口设计的几个容易忽略的细节
用分层架构驯服复杂业务:一个DDD落地样本
从零开始写Python项目:我的环境搭建实践指南
手机上提取Android系统镜像:3步拿到boot.img的免Root方法

今日推荐

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定
WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化
如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

硬编码密钥、固定IV:Navicat的“加密“为何形同虚设?how-does-navicat-encrypt-password安全审查报告

发布时间:2026/8/24 10:47:19
硬编码密钥、固定IV:Navicat的“加密“为何形同虚设?how-does-navicat-encrypt-password安全审查报告 硬编码密钥、固定IVNavicat的加密为何形同虚设how-does-navicat-encrypt-password安全审查报告【免费下载链接】how-does-navicat-encrypt-passwordTransferred from https://github.com/DoubleLabyrinth/how-does-navicat-encrypt-password项目地址: https://gitcode.com/gh_mirrors/ho/how-does-navicat-encrypt-password在 Navicat 中勾选保存密码后数据库密码会以密文形式写入 Windows 注册表。这篇基于开源项目 how-does-navicat-encrypt-password 的安全审查报告将告诉你Navicat 的密码加密到底是怎么实现的以及为什么这套加密因硬编码密钥与固定IV而形同虚设——任何拿到注册表或备份文件的人都可以秒级还原你的数据库明文密码。 核心发现速览#审查发现严重度说明1硬编码密钥 严重Blowfish 密钥由固定字符串3DC5CA39做 SHA-1 得到所有用户、所有机器共用2固定初始向量 IV 严重IV 是预先算好的常量相同密码永远得到相同密文3明文字面量密钥 严重Navicat 12 的 AES 密钥、IV 直接以可读字符串写在程序里4无用户/机器级隔离 高密文不绑定任何身份离线即可批量解密5Navicat 13 改进 低v3 算法升级为 AES-256-GCM 随机密钥风险大幅下降一、Navicat 密码存在哪里先看保险箱位置勾选Save Password后连接信息主机、端口、用户、加密后的密码Pwd会被写入Windows 注册表。不同数据库类型对应不同路径数据库类型注册表路径HKEY_CURRENT_USER 下MySQLSoftware\PremiumSoft\Navicat\Servers\连接名MariaDBSoftware\PremiumSoft\NavicatMARIADB\Servers\连接名Microsoft SQLSoftware\PremiumSoft\NavicatMSSQL\Servers\连接名OracleSoftware\PremiumSoft\NavicatOra\Servers\连接名PostgreSQLSoftware\PremiumSoft\NavicatPG\Servers\连接名SQLiteSoftware\PremiumSoft\NavicatSQLite\Servers\连接名⚠️ 注意上图中的Pwd字段——它看起来是一串看不懂的十六进制。但关键问题是解密它所需的密钥在哪里答案就藏在 Navicat 的程序内部。二、Navicat 密码加密流程拆解三步暴露致命缺陷Navicat 11 及更早版本使用一条基于 Blowfish 的自研加密流水线将密码逐 8 字节块处理第1步硬编码密钥——密钥人人可见Navicat 把字符串3DC5CA39直接写进源码计算它的SHA-1 摘要作为 160 位的 Blowfish 密钥。这意味着密钥是固定的不随用户变化、不随机器变化。在密码学中这叫共享密钥——任何能拿到 Navicat 程序的人都能拿到同一把钥匙。第2步固定IV——相同密码产生相同密文初始向量IV是用上述固定密钥对 8 字节全0xFF数据加密得到的常量D9C7C3C8870D64BD。密钥和 IV 双双固定带来一个直接后果同一个密码加密两次密文完全相同。攻击者无需暴力破解只需预先建一张常见密码 → 密文字典直接查表即可命中。第3步自研反馈链——看起来像 CBC其实更弱加密流水线将每个明文块先与当前向量做异或XOR再经 Blowfish 加密密文回传给下一块继续参与运算不足 8 字节的最后一块采用异或明文的方式收尾。这套设计看似有链条反馈但由于密钥、IV 全部固定且公开于程序之中链条再长也锁不住门。三、Navicat 12 换用 AES为何依然裸奔导出 NCX 连接备份文件时Navicat 12 把算法换成了AES-128/CBC/PKCS7Padding但密钥和 IV 依然是直接写在程序里的明文字符串密钥libcckeylibcckeyIVlibcciv libcciv算法升级了病根没变——共享密钥 固定IV。三个版本横向对比一目了然版本使用场景算法密钥/IV 来源安全评估≤ 11注册表保存密码Blowfish 自研流水线硬编码 SHA-1(3DC5CA39) 固定 IV❌ 可离线解密12NCX 备份导出AES-128-CBC/PKCS7明文字符串libcckey…/libcciv…❌ 可离线解密13新版存储AES-256-GCMWindows 凭据管理器中的随机navicat_cred32 字节✅ 相对安全 值得肯定的是Navicat 13v3 算法改用 AES-256-GCM密钥来自系统凭据管理器中生成的随机 32 字节还带随机 nonce 与完整性校验——这才叫正确的密码学实践。但 v1/v2 的历史包袱仍在老版本用户的密码依然透明。四、对普通用户意味着什么3 个真实风险能登录你电脑的人就能看到密码注册表位于HKEY_CURRENT_USER任何获得该 Windows 账户使用权的人或恶意软件读取密文后用公开算法即可秒级还原明文。密文不等于保密这套加密不绑定你的身份或设备。拷贝出密文 拷贝出密码本身。NCX 备份文件 密码清单带密码导出的.ncx文件一旦转发给同事或上传到网盘任何拿到文件的人都能用同一把固定密钥解出全部数据库密码。一句话总结这套加密相当于把钥匙压在门垫下面然后锁上了门。五、数据库密码安全建议4 条防护清单✅生产连接不勾选保存密码——密码交给 1Password、Bitwarden 等密码管理器用时复制粘贴。✅导出的 NCX 文件不要含密码分发前删除确需分发时改用无密码版本。✅升级到 Navicat 13让新连接使用 v3AES-256-GCM 随机密钥算法。✅定期轮换数据库密码并遵循最小权限原则——即使被解密损失也可控。六、项目资料与验证方式想亲手验证密文 30 秒还原仓库提供了多语言实现与一键脚本资料相对路径说明完整加解密实现cpp/NavicatCrypto.hppNavicat 11/12 两套算法的 C 复刻算法源码cpp/blowfish.c、cpp/aes.c、cpp/sha1.cBlowfish / AES / SHA-1 参考实现跨语言参考实现csharp/NavicatCrypto.cs、java/NavicatCrypto/Navicat11Cipher.java、vb.net/NavicatEncrypt.vbC# / Java / VB.NET 版本加密解密验证工具python3/navicat-cipher.py支持-v1/-v2/-v3三套算法注册表密码批量读取python3/show-navicat.py在 Windows 上列出全部连接及明文密码NCX 备份解析python3/ncx-dump.py解析导出文件中的加密密码原理详解doc/how-does-navicat-encrypt-password.md算法逆向的完整推导过程克隆仓库并运行验证在 Windows 环境读取系统凭据需pywin32git clone https://gitcode.com/gh_mirrors/ho/how-does-navicat-encrypt-password pip install cryptography pywin32 python3 python3/navicat-cipher.py dec -v1 注册表中的Pwd密文看到明文的那一刻你会明白加密算法本身没有错错的是把钥匙硬编码进了锁里。【免费下载链接】how-does-navicat-encrypt-passwordTransferred from https://github.com/DoubleLabyrinth/how-does-navicat-encrypt-password项目地址: https://gitcode.com/gh_mirrors/ho/how-does-navicat-encrypt-password创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号