gpt4 book ai didi

c - C 语言维吉尼亚密码程序

转载 作者:行者123 更新时间:2023-11-30 17:23:31 30 4
gpt4 key购买 nike

该程序应该使用 vigenere 密码来加密某个消息。该程序应该对消息和关键字都“区分大小写”。如果程序遇到任何特殊字符或数字,也应该原样打印它们。

最后一部分似乎有效,而其余部分,尽管数学似乎是正确的,但它并没有按预期打印。我还将 ASCII 值转换为 A-Z/0-26,执行密码公式,然后将它们转换回 ASCII。

    // key validation
string kw = argv[1];
int kwl = strlen(kw);
for (int i = 0; i < kwl; i++)
{
if (!isalpha(kw[i]))
{
printf("Usage: ./vigenere keyword\n");
return 1;
}
}

// get message and length
string mssg;
mssg = GetString();
int lngth = strlen(mssg);


// cryptography
int k = 0;
for (int j = 0; j < lngth; j++)
{
if (isalpha(mssg[j]))
{
if (islower(mssg[j]))
{
if (islower(kw[k % kwl]))
printf("%c", (((mssg[j] - 97) + (kw[k % kwl] - 97)) & 26) + 97);
else
printf("%c", (((mssg[j] - 97) + (kw[k % kwl] - 65)) & 26) + 97);
k++;
}
else if (isupper(mssg[j]))
{
if (isupper(kw[k % kwl]))
printf("%c", (((mssg[j] - 65) + (kw[k % kwl] - 65)) & 26) + 65);
else
printf("%c", (((mssg[j] - 65) + (kw[k % kwl] - 97)) & 26) + 65);
k++;
}
}
else
printf("%c", mssg[j]);
}

printf("\n");

return 0;
}

最佳答案

I'm still getting an error somewhere on the math

错误是您有 & 26 而不是 % 26

关于c - C 语言维吉尼亚密码程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27510061/

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