Toolonit
  1. 首页
  2. 加密
  3. 加密 / 解密
  4. RC4

RC4 加密与解密

使用 RC4 流密码加密或解密旧数据。

按现在的标准,RC4 已不够安全——可用来读取旧数据;新数据请使用 AES 或 ChaCha20。 前往 AES

加密方式

解密时还需要这个密码。输入的任何内容都不会离开本页。

PBKDF2 迭代次数

OpenSSL 的默认值是 10,000。任何次数都可以:次数越多,密码越难猜;解密时必须使用相同的次数。

密钥长度
输出格式
OpenSSL 等效命令
openssl enc -rc4 -pbkdf2 -iter 10000 -a -A -provider legacy -provider default

OpenSSL 会提示输入密码;把文本粘贴进去,或加上 -in 和 -out 文件。

RC4 又称 ARC4 或 ARCFOUR,是曾用于 SSL/TLS 和 WEP 无线网络的流密码。它没有分组、没有模式,也没有 IV:它把密钥变成一串字节流,再与文本做异或,因此密文与文本的长度完全相同。本页用 RC4 加密和解密文本,可以使用 openssl enc -pbkdf2 格式的密码,也可以使用 40 到 2048 位(默认 128 位)的 hex 密钥,方便你读取旧系统的数据或为它们生成数据。RC4 已被攻破,新数据请使用 AES 或 ChaCha20。一切都在浏览器中运行:文本和密钥不会离开你的设备;免费,无需注册。

如何解密 RC4 文本

  1. 选择“解密”并粘贴 Base64 或 hex 文本(格式会自动识别),或者选择“加密”并输入文本。
  2. 输入密码,或切换到“密钥和 IV(hex)”并输入密钥;RC4 没有 IV,所以只有一个密钥输入框。
  3. 选择数据加密时所用的密钥长度:不确定的话选 128 位,出口级 RC4 选 40 位。
  4. 复制或下载结果,也可以点“交换”把结果移到输入框并切换方向。

功能

  • RC4 密钥长度 40 到 2048 位,以 8 位为步长任选;40、128、256、2048 位一键可选
  • 没有 IV,也没有填充:密文与文本长度完全相同
  • openssl enc -pbkdf2 格式的密码模式,并给出适用于 OpenSSL legacy provider 的 rc4 或 rc4-40 命令
  • “密钥和 IV(hex)”模式只需一个密钥,可手动输入或自动生成
  • 输入输出均支持 Base64 或 hex;非文本结果以 hex 显示

隐私安全吗?

是的。RC4 在浏览器内的 WebAssembly 中运行;你解密的数据及其密钥或密码不会上传或保存。

常见问题

RC4 安全吗?

不安全。它的密钥流存在统计偏差,攻击者可以借此还原数据,因此 RFC 7465 在 2015 年禁止在 TLS 中使用 RC4。只在读取已有的 RC4 数据时使用它,需要保留的内容请用 AES 或 ChaCha20 重新加密。

ARC4 和 RC4 是一样的吗?

是的。RC4 由 Ron Rivest 于 1987 年设计,一直作为商业机密保存;1994 年算法泄露后,由于 RC4 这个名称是注册商标,其他人便以 ARC4 或 ARCFOUR(意为“疑似 RC4”)的名义实现了它。两者生成的密文完全相同。

能用 OpenSSL 解密吗?

128 位和 40 位密钥可以:echo 'U2FsdGVkX1…' | openssl enc -d -rc4 -pbkdf2 -iter 10000 -a -A -provider legacy -provider default,40 位密钥则用 -rc4-40。密钥和 IV 模式下,用 -K <密钥 hex> 代替 -pbkdf2 -iter,不加 -iv。openssl enc 不支持其他长度的 RC4 密钥。

可以重复使用同一个 RC4 密钥吗?

不可以。同一个密钥总是产生相同的密钥流,所以把用同一密钥得到的两份输出做异或,密钥流就会相互抵消,暴露出两段文本的异或值。密码模式下不会出现这种情况:随机盐让每条消息都有自己的密钥,每次输出都不同。在密钥和 IV 模式下,请为每条消息使用新的密钥。

为什么得到的是无法阅读的字节,而不是报错?

因为 RC4 无法分辨密钥是对是错:用错误的密码、迭代次数或密钥长度解密,仍然会得到字节,只不过是随机的,页面会以 hex 显示。请检查每项设置是否都与加密时一致。

相关工具