【发布时间】:2020-04-08 00:49:20
【问题描述】:
我似乎无法解密十六进制缓冲区,我很确定它是用 RC4 加密的,而且我很确定我知道密钥。作为密码学的初学者,我只是想确保在开始认为我的假设是错误的之前,我实际上做的一切都是正确的。
const crypto = require('crypto');
const buffer = Buffer.from('471b...', 'hex');
const decipher = crypto.createDecipheriv('rc4', 'MyKey', '');
let decrypted = '';
decrypted += decipher.update(buffer, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted) // outputs stuff like "�Y6�k�"
我的十六进制缓冲区是否真的在 RC4 中加密和/或我的密钥是否正确?
【问题讨论】:
-
有一种 RC4 变体,其中密钥流的前 256 个字节被丢弃以避免已知攻击之一。
-
我的示例中的密钥流对应于“MyKey”还是缓冲区?如果它对应于“MyKey”,我想这不适用于我的情况,因为它甚至没有 256 个字节,
-
密钥流是 RC4 引擎生成的伪随机字节流。它们是您与明文进行异或以生成密文的字节,反之亦然。
plaintext XOR keysteam -> ciphertext和ciphertext XOR keystream -> plaintext。 RC4 是流密码;阅读该主题可能会有所帮助。
标签: encryption hex rc4-cipher node-crypto