Rabbit 流密码解密
解密 CryptoJS 的 Rabbit 流密码数据(带口令的 Salted__ Base64),或使用 128 位十六进制密钥和可选 64 位 IV 的原始密文。
输出为 Base64 编码的 OpenSSL “Salted__” 格式,密钥和 IV 由口令派生——与 CryptoJS.Rabbit.encrypt(text, passphrase) 格式相同。OpenSSL 本身不支持 Rabbit。
完全在浏览器中运行,您的数据不会被上传。
什么是 Rabbit 解密?
解密用 Rabbit 流密码加密的数据,通常由 CryptoJS.Rabbit.encrypt 生成。粘贴 Base64 的 U2FsdGVkX1… 字符串及其口令,或粘贴原始密文及十六进制密钥和 IV。
如何使用 Rabbit 解密
- 选择与加密时相同的密钥来源:对于
U2FsdGVkX1…("Salted__")数据选择口令(兼容 OpenSSL),对于原始密文选择原始密钥 + IV(十六进制)。 - 输入口令或 16 字节的十六进制密钥(如果使用了 IV,还要输入 8 字节 IV)。
- 粘贴密文并点击解密。
示例
U2FsdGVkX19PD1rihUsU44L3vJkKAmy580QhQw== (passphrase "secret")
Hello Rabbit
密文来自 CryptoJS.Rabbit.encrypt("Hello Rabbit", "secret")。
何时使用 Rabbit 解密
用于读取或调试使用 CryptoJS Rabbit 的应用中的数据。没有正确的口令或密钥就无法解密。
Rabbit 解密 的工作原理
从 Salted__ 头部读取盐,重新派生 16 字节密钥和 8 字节 IV(EVP_BytesToKey MD5 或 PBKDF2-SHA256),然后把 Rabbit 密钥流与密文异或。在原始模式下,直接使用你的密钥和 IV。流密码没有填充,因此密钥错误会表现为无效的 UTF-8 输出。
常见用例
- 解密使用 CryptoJS.Rabbit 的 Web 应用存储的值
- 检查你的 Rabbit 实现是否与 CryptoJS 一致
- 调试时恢复测试数据
- 把 Rabbit 加密的数据迁移到 AES
安全提示
Rabbit 目前没有已知的实际破解方法,但它很少被使用,没有内置的完整性保护,支持它的库也很少。新系统请使用 AES-GCM。
常见问题
为什么会出现“无效 UTF-8”错误?
最可能是口令或密钥错误;Rabbit 本身无法发现这一点。如果原始数据是二进制,请把输出切换为 Hex。
我的密文没有 U2FsdGVkX1 前缀。
那说明调用 CryptoJS 时使用了显式的密钥和 IV。请选择原始密钥 + IV(十六进制)并以十六进制输入它们。
支持 RabbitLegacy 吗?
不支持,仅支持标准的 CryptoJS.Rabbit 变体。