我在文档中进行了一些转储分析,其中显示了一堆加密数据以及生成的解密数据。 解释了所使用的算法(简单RC4)。 丢失的唯一一条信息是用于从加密数据到解密数据的密钥。

我正在根据此文档材料编写自动测试。 我可以选择自己的一些密钥,然后从明文中重新创建加密的数据,但是我想知道是否有任何简单的密码分析方法来找到用于加密原始数据的原始密钥。

由于密钥很小,可能可以采用暴力破解方法,但是我更感兴趣地知道是否存在任何更智能的方法。

以下是我当前的C加密代码(使用OpenSSL):

unsigned char source[16] = {
    0xdb, 0xa3, 0x13, 0x30, 0x79, 0xa3, 0xcd, 0x9e,
    0x48, 0xf4, 0x8f, 0x06, 0x37, 0x1b, 0x45, 0xdd};
unsigned char expected_target[16] = {
    0x00, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x00,
    0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66};
unsigned char target[16] = {};
unsigned char key[16] = {};

RC4_KEY crypt_key;
RC4_set_key(&crypt_key, 16, key);
RC4(&crypt_key, 16, source, target);

printf("key    = [%02x %02x %02x %02x %02x %02x %02x %02x "
               "- %02x %02x %02x %02x %02x %02x %02x %02x]\n",
    key[0], key[1], key[2], key[3],
    key[4], key[5], key[6], key[7],
    key[8],  key[9], key[10], key[11],
    key[12], key[13], key[14], key[15]);

printf("source = [%02x %02x %02x %02x %02x %02x %02x %02x "
               "- %02x %02x %02x %02x %02x %02x %02x %02x]\n",
    source[0], source[1], source[2], source[3],
    source[4], source[5], source[6], source[7],  
    source[8], source[9], source[10], source[11],
    source[12], source[13], source[14], source[15]);

printf("target = [%02x %02x %02x %02x %02x %02x %02x %02x "
               "- %02x %02x %02x %02x %02x %02x %02x %02x]\n",
    target[0], target[1], target[2], target[3],
    target[4], target[5], target[6], target[7],
    target[8], target[9], target[10], target[11],
    target[12], target[13], target[14], target[15]);

printf("expected_target = [%02x %02x %02x %02x %02x %02x %02x %02x "
                        "- %02x %02x %02x %02x %02x %02x %02x %02x]\n",
    expected_target[0], expected_target[1], expected_target[2], expected_target[3],
    expected_target[4], expected_target[5], expected_target[6], expected_target[7],
    expected_target[8], expected_target[9], expected_target[10], expected_target[11],
    expected_target[12], expected_target[13], expected_target[14], expected_target[15]);

#1楼 票数:5 已采纳

  1. 否。尚无有效的RC4裂解方法。

  2. 您需要数百万年的时间才能强行使用128位密钥。 您可以尝试使用密码列表。

  ask by kriss translate from so

未解决问题?本站智能推荐:

2回复

为什么DES不安全? 我们如何知道何时停止迭代以及我们已经找到了密钥? [关闭]

据说DES是不安全的。 我猜这是因为密钥长为55位,所以使用蛮力将最多进行2 ^ 55次迭代才能找出如今并不多的密钥。 但是,如果我们迭代2 ^ 55,我们何时知道何时停止?
1回复

如何用暴力破解RC4的内部状态?

我想通过RC4的暴力破解数组值找到RC4的内部状态,但是我不确定如何暴力破解它。 在行printf(“%d \\ n”,Data [k] ^ = s [t]); 显示这样的价值。 116、101、115、116、82、67、52 我不确定是否必须强行使用此值,或者不确
2回复

RC4整数Java的加密/解密

简而言之,我有一个约10位数字的整数。 我想使用Java中的rc4算法对其进行加密。 我上网搜索,但是只能找到字符串值/明文的加密。 请指教。 谢谢!
2回复

Java中的rc4加密和解密

我已经尝试过RC4加密和解密过程。 我不断在代码行s2=key.charAt(j++)遇到错误。 调试器告诉我无法将其从char解析为int 。 输出一直运行到进入密钥流为止。 XOR操作无法解决。 谁能指出一个可能的解决方案?
1回复

RC4逐行解密

我必须转换一些文件,最终可能会使用php脚本转到250 mb。 它们通过rc4加密进行了加密,并在文件的前266个字节中包含了密钥和描述。 我有一个正在运行的加密功能,必须保持原样。 这里是: 我的文件读取/解密代码在这里: 以前,代码接受一些小文件,并通过读取文件的孔内容
2回复

使用C#和Java进行RC4加密/解密

我什至使用AES算法对文件进行加密和解密,但是根据我的研究,该算法的性能比Java中的RC4算法要慢。 我使用此代码在C#中加密文件 我需要使用C#加密文件并使用java解密该文件,但是找不到两种语言的实现。
2回复

如何使用 Python 解密用 rc4 加密的文件?

我得到了一个用 rc4 密钥加密的文件。 我得到了那个密钥,想用 python 脚本解密它。 我怎样才能做到这一点?
1回复

RC4 加密功能

我正在尝试创建一个 R 函数,该函数将采用种子和密钥长度来生成 RC4 密钥流。 以下是我到目前为止所拥有的: 希望得到一些帮助来解决这个问题以运行正确的 rc4 encrpytion