什么样的加密机制使用重复的xor?

时间:2011-03-31 00:39:30

标签: security cryptography encryption

我正在尝试分析一个简短的加密程序,并找出它正在使用的机制。

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char * argv[] ) {
    long int key;
    char * endptr;

    key = strtol( argv[1], &endptr, 10 );

    srandom( key );
    { /* now copy input to output through crypt transformation */
            char ch;
            while (!feof( stdin )) {
                    putc( (getc(stdin) ^ random())&0xFF, stdout );
            }
            fclose( stdout );
    }
}

我可以简单地遵循这一点,但我在努力清除它正在使用的机制时遇到了麻烦..

我正在看以下内容:

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/Block_cipher

http://en.wikipedia.org/wiki/Stream_cipher

http://en.wikipedia.org/wiki/Diffie-Hellman

我倾向于迭代的块密码,但我现在还不知道。

2 个答案:

答案 0 :(得分:2)

这是一个流密码。密钥是通过给定密钥播种srandom而生成的。

  

在密码学中,流密码是一种   对称密钥密码,明文   比特与伪随机数组合   密码比特流(密钥流),   通常由排他性或(xor)   操作。在流密码中   明文数字加密一个   一时间,和转型   连续数字在   加密。

你在这里做的是什么。 key是对称密钥,密码流由random()生成。对srandom(key)的调用确保只要你的密钥相同,随机流就会一样。

答案 1 :(得分:2)

您需要在脑海中清楚地区分类别中的密码。有:

  • 分组密码,以固定大小的输入块运行
  • 对数据流(即一次一个字节)进行操作的流密码

以上只能通过他们接受的输入大小来区分密码;它与用于生成加密文本的机制无关。

关于这种机制,我们有:

  • 替代密码
  • 转置密码
  • 许多其他类型基本上是上述的组合,可能有很多次迭代

所以首先尝试回答这个问题:

您的示例是流密码还是分组密码?请记住,这与如何加密无关!