Abracadabra 魔曰
Abracadabra 魔曰
熔古铸今,韵入密语
Abracadabra(魔曰) 是开源,安全,高效的文本加密工具。
将数据加密为汉字构成的文言文,完全开源,易于部署,易于使用。
查阅 快速使用 一节,快速开始使用/部署本项目。
查阅 项目主页,了解本项目的技术特点和细节。
查阅 开放源代码许可 一节,了解本项目的依赖项和许可证。
特性
- 仿真,使用文言语法句式。
- 开源,所有源代码公开可查。
- 安全,标配 AES,可选高级加密套件。
- 可靠,代码经过严格单元测试。
- 便捷,易于本地部署和使用。
熔古铸今:文言文仿真加密
早夏振于局而听恋,路在临驿,静星之舒,迸于夏。梦曰:“不请流也” ,星雅即灯明,雪近即城极,返林而不能放,开而不能指,镜也。
此冰有聪雪高霞,极茶谜竹。或添福看茶,添棋于云,盈岩作鸳,春鹤信心。风取,航鹂旅人,北兰歌涧,雨云信涧,此韵有长路瀚灯,静云青林。
构造高仿真文言文,参考《古文观止》《经史百家杂钞》《古文辞类纂》等古代典籍。
标准 AES256 加密,引入更复杂的组句、语法匹配机制,将密码和中国古典文言文相融合。
密文高度随机,支持用户自定义随机性和文本风格偏好,打造前所未有的跨文化数字加密方案。
快速使用
请查阅 项目主页 ,详细了解使用/部署方法。
静态页面 / 前端源码
本项目有自动托管在Cloudflare Pages的静态页面可供直接使用。
如果你想自行快速部署这个静态页,可以在Release中下载快速部署文件包。若要自行编译或修改,请前往前端源代码仓库。
浏览器插件
浏览器插件基于本项目的 JavaScript 实现。
已上架 Chrome WebStore, Edge 加载项 和 Firefox 扩展。
如果不方便访问Chrome插件商店,也可以访问Edge插件商店,和Firefox扩展商店。
提示:Edge 插件商店的上架审核速度十分缓慢,因此更新速度也更慢。不推荐从Edge商店下载本插件。
Android 客户端
本项目的 Android 客户端完全在 WebView 中静态运行。
APK 使用 Cordova 构建,完全离线运行,不申请联网权限,没有自动更新等配套功能。
功能和界面均和前端静态网页没有差异。
APK文件可以 在 Release 中下载
细节概要
请查阅 项目主页 了解更多。
加解密过程
明文 -> 压缩 -> 加密/高级加密 -> Base64 -> 三重转轮 -> 映射汉字 -> 组句(仅仿真加密时) -> 密文
密文 -> 解仿真(仅仿真加密) -> 转轮逆映射 -> Base64 -> 解密 -> 解压缩 -> 明文
映射表
Abracadabra 以最常用的 3000 个汉字为密本,对大小写拉丁字母,阿拉伯数字和部分符号进行映射。
密表为纯人工编纂,没有让人眼花缭乱的生僻字。
映射表公开可查,查阅 映射表(传统) 或者 映射表(仿真) 以了解密本的全貌。
AES 加密
核心安全性由久经考验的 AES 加密算法提供,采用无填充的AES-256-CTR,节省密文长度。
AES 加密密钥和转轮密钥是同一个,均采用哈希值。
高级加密套件
魔曰提供高级密码学套件支持,使用者可藉此执行更高安全性的加密。
除 AES-256-CTR 外,下列密码套件受支持:
- 强IV (初始化向量,16Bytes)
- HMAC-SHA256 (消息签名,32Bytes)
- PBKDF2 (密钥衍生算法,100000次哈希迭代,盐值长度 16Bytes)
- TOTP (时效性密钥,作为 PBKDF2 之盐值,可自定义多个参数)
启用高级加密套件将导致密文长度显著增加,所有组件均可独立开启和关闭。
请查阅 项目主页 了解更多。
三重转轮混淆
模拟转轮密码机,每次加密均会对密本映射进行偏移。
简言之,程序会将给定的密钥进行 SHA256,得到一个长度为 32 的 Uint8_t 数组。
这个数组中的每个数字,都会决定三重转轮中每个转轮每次迭代的转动方向和转动距离。
数字/符号,字母分别拥有一套转轮,即总共六个转轮,改变密钥相当于更换一套完全不同的转轮。
转轮显著增加了 Base64 密文的安全性,查阅 项目主页 来了解转轮的详细运行机制。
压缩
为了削减密文的长度,每次加密前会对数据进行智能压缩。
针对短文本,采用专门为短文本优化的 Unishox2 压缩算法。
一般数据(>1KB)则采用GZIP。
压缩后会执行效率验证,如果出现无效压缩,则自动回落到原始数据。
原创逆向研究,特别支持解密熊曰(与熊论道)密文。
详情请见 使用提示 和 Issue #123
有关本项目中内置的熊曰解密函数,请见 JavaScript 部署 。
鸣谢
感谢 Unishox2 提供高效的短文本压缩方案。
感谢 中国哲学书电子化计划 提供高质量的古籍参考资料。
感谢 JS.ORG 为本项目提供域名支持。
感谢 @Amlkiller 为本项目提供十分有价值的反馈和建议。
感谢 熊曰(与熊论道)、佛曰、兽音译者 为本项目提供灵感和参考。
感谢贡献 PR 和参与测试的其他所有人,以及正在使用本项目的您。
开放源代码许可
本项目受私有许可证保护,使用本项目则默认视为同意并遵守相关条款。禁止将本项目用于非法用途。
查阅 AIPL-1.1 许可 来了解详细信息,也可以前往 #87 查阅简单介绍。
以下是本项目的依赖项:
- Unishox2 短字符串压缩实现 Siara-cc, Apache-2.0 License.
- crypto-js 加密算法实现 Jeff Mott/Evan Vosberg, MIT License.
- pako GZIP压缩实现 Vitaly Puzrin/Andrei Tuputcyn, MIT License.
- js-base64 Base64编码工具实现 Dan Kogai, BSD-3-Clause License.
- mersenne-twister 梅森旋转算法实现 Makoto Matsumoto/Takuji Nishimura, BSD-3-Clause License.
- opencc-js 简繁体转换实现 nk2028, MIT License.
- otplib TOTP 实现 Gerald Yeo, MIT License.
- noble-hashes 哈希和PBKDF2算法实现 Paul Miller, MIT License.
本项目许可证与所有依赖项的许可证兼容。
