gpt4 book ai didi

c - C语言中流密码的实现

转载 作者:行者123 更新时间:2023-11-30 18:59:07 28 4
gpt4 key购买 nike

我想实现以下功能:

  • 我使用 Mersenne-Twister-Algorithm(来自维基百科)作为我的伪随机数生成器。
  • 这是一个流密码
  • 伪代码为:加密文本 = 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 部分)一些不可读的内容。我的错误在哪里?或者整个代码都是错误的?

最佳答案

如果你试图用其他东西打印一个字符xored,你真的经常会得到奇怪的字符。例如,将“M”与“P”进行异或将得到“\GS”(组分隔符),这是不可打印的。

关于c - C语言中流密码的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712158/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com