我想实现以下功能:
- 我正在使用 Mersenne-Twister-Algorithm(来自 Wikipedia)作为我的伪随机数生成器。
- 这是一个流密码
- 伪代码为:密文=CLEARTEXT XOR STREAM;“流”被定义为 PSEUDORANDOM_NUMBER XOR KEY
我写了以下函数:
int encrypt(char clear[1000], char key[100], int lk/*length of the cleatext*/, int ls /*length of key*/) {
int a, i;
unsigned char result[1000];
char string[1000];
for (i = 0; i <= lk; i++) {
if (i+1-ls >= 0) { /*if the key is too short*/
a = mersenne_twister();
string[i]=key[i+1-ls]^a; /*XOR */
} else {
a=mersenne_twister();
string[i] = key[i]^a; /*XOR */
}
result[i] = clear[i]^string[i];
putchar(result[i]);
}
return 1;
}
但该功能不能正常工作;它返回(putchar
部分)不可读的东西。我的错误在哪里?还是整个代码错了?