gpt4 book ai didi

c - 如何在 C 中调试 Vigenere 密码?

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:27 24 4
gpt4 key购买 nike

我正在尝试制作维吉尼亚密码。我的问题是我没有得到预期的输出。运行该程序时,它会给出以下输出:HFNLP WPTLE。正确的输出应该是:HFNLP YOSND。

我认为问题出在模 (mod) 的错误使用上。当我尝试用变量 i 环绕键 (ABC) 时,纯文本中的空格 ("") 也会环绕,直接影响环绕的结果。我不知道该怎么做才能获得正确的输出。

string plainText = "HELLO WORLD";   
string keyword = "ABC";

for(int i = 0; i < strlen(plainText);i++)
{

int wrap = (int) strlen( keyword) % (int) strlen(plainText);

if(isalpha(plainText[i]))
{

int upper = 'A' + (plainText[i] + (toupper(keyword[i % wrap]))) % 26;
printf("%c", upper);

}

最佳答案

非字母字符的键索引不得增加。

修复示例:

char *keyp = keyword;
char ch;
for(int i = 0; ch = plainText[i]; i++){
if(isalpha(ch)){
putchar('A' + (toupper(ch) - 'A' + toupper(*keyp++) - 'A') % 26);
if(!*keyp)
keyp = keyword;
} else
putchar(ch);
}

关于c - 如何在 C 中调试 Vigenere 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263156/

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