用RC4解密时,跳过字节是什么意思?

When deciphering with RC4, what does it mean to skip bytes?

我有需要解密的二进制数据、算法 (RC4) 和密钥。然而,为了破译数据,我得到的一条指令是 "the length of the key initially gets skipped" 或 "len bytes are skipped initially".

这到底是什么意思?这是否意味着如果我的密钥是 10 个字节长,我需要将没有前 10 个字节的二进制数据传递给解密,然后将前 10 个字节与解密后的字节连接?

const decipher = crypto.createDecipheriv('RC4', 'mysuperkey', null);
const buffer = decipher.update(data.slice('mysuperkey'.length));

decipher.final();

这行不通,所以我可能不明白说明。

RC4 的前几位是不安全的,因此您经常被指示跳过 密钥流 的一些初始字节。流密码的工作方式是它创建一个依赖于密钥的伪随机数据流。该流与明文进行异或以创建密文,并与密文进行异或以创建明文。

要跳过密钥流的一些字节,您可以简单地加密/解密一些(零值)字节并丢弃结果。这适用于加密和解密。如果 API 有一个特定的 skip 方法那么你当然应该使用它,但我认为它不存在于 CryptoJS 中。