RC4 加密(旧版)

用 RC4(ARC4)流密码加密文本,可使用兼容 OpenSSL 的口令或十六进制原始密钥。仅用于旧系统兼容和测试向量。

RC4 已被攻破:密钥流存在统计偏差,TLS 已禁止使用(RFC 7465)。仅用于旧数据,切勿用于新的加密。

输出为 Base64 编码的 OpenSSL “Salted__” 格式:8 字节随机盐后接密文。密钥和 IV 由口令和盐派生,因此同一段文本每次加密结果都不同。等效命令:

与 OpenSSL 一样,口令会被派生为 128 位 RC4 密钥。CryptoJS.RC4 使用口令时派生的是 256 位密钥,因此其输出无法在这里解密。

openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k '…'

完全在浏览器中运行,您的数据不会被上传。

什么是 RC4 加密?

使用 RC4(也称 ARC4 或 ARCFOUR)加密数据,这是一种曾用于 WEP、早期 TLS 和许多文件格式的流密码。输出与输入长度相同,因为 RC4 把数据与密钥流做异或。

如何使用 RC4 加密

  1. 选择口令(兼容 OpenSSL)并输入口令,或选择原始密钥 + IV(十六进制)并以十六进制输入 1–256 字节的密钥(RC4 不使用 IV)。
  2. 输入或粘贴明文。
  3. 点击加密,并选择 Base64 或 Hex 作为输出编码。
  4. 复制密文。

示例

输入
Raw key 4b6579 ("Key"), plaintext "Plaintext", Hex output
输出
bbf316e8d940af0ad3

经典的 RC4 测试向量。

何时使用 RC4 加密

用于与旧软件互通,或检查 RC4 测试向量(RFC 6229)。切勿用 RC4 做新的加密;最初的几个密钥流字节会泄露密钥的信息,而且没有完整性校验。

RC4 加密 的工作原理

RC4 先根据密钥构建一个 256 字节的置换(密钥调度算法),然后为每个输入字节生成一个密钥流字节,并与明文异或。原始模式直接使用你的密钥字节(1–256 字节)。口令模式像 openssl enc -rc4 那样,由口令和随机盐派生 16 字节密钥(EVP_BytesToKey MD5 或 PBKDF2-SHA256),并输出 Salted__ 格式。加密和解密是同一种运算。

常见用例

  • 验证 RC4 测试向量,例如 Key/Plaintext → BBF316E8D940AF0AD3
  • 为使用 ARC4 的遗留应用生成数据
  • 研究 WEP 和 TLS 中的 RC4 为何被攻破
  • 重现 openssl enc -rc4 的输出

安全提示

RC4 已被攻破:其密钥流存在强烈的统计偏差,RFC 7465 禁止在 TLS 中使用它。它不提供完整性保护。请仅用于遗留数据。

常见问题

为什么我无法解密用口令生成的 CryptoJS.RC4 输出?

CryptoJS 由口令派生 256 位的 RC4 密钥,而 OpenSSL 派生 128 位密钥。本工具遵循 OpenSSL。使用原始密钥时,两者的结果相同。

RC4 使用 IV 吗?

不使用。这就是为什么用同一个密钥加密两条消息是灾难性的:把两段密文异或会抵消密钥流。口令模式每次都使用随机盐,从而避免了这个问题。

对应的 OpenSSL 命令是什么?

openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k <passphrase>(OpenSSL 3 需要 legacy provider)。

探索更多分类