gpt4 book ai didi

c++ - 替换加密不返回字符

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

我目前正在尝试制作一个替代加密/解密程序。该程序从文件中读取并根据用户给定的 key 逐字符加密。例如,如果文件读取“ATTACK AT DAWN”并且给定的 key 是“LEMON”,则生成的密文将是“LXFOPV EF RNHR”。

我已经制作了一个加密函数,但是,它将值更改为字母数字字母以外的字符。任何帮助,将不胜感激。我粘贴了下面的函数:

void encrypt(ifstream& in_s, ofstream& out_s, char next, char& cypher, int& i, char key[])
{

in_s.get(next); // get character from file
while (!in_s.eof())
{
check_i(i); // check i value is within the constraint for key[4]

if(isupper(next)) // if uppercase run cypher
{
cypher = ((next - 65) + (key[i] - 65) % 26) + 65;
}
else if (islower(next))
{
next = toupper(next); // change to upper
cypher = ((next - 65) + (key[i] - 65) % 26) + 65;
cypher = tolower(cypher); // change to lower
}
else // if blank do nothing
{
cypher = next;
}
cout << cypher;


in_s.get(next); // get next char
i++; // add 1 to i for key[i]
}
}

最佳答案

您对 operator precedence 有疑问.模运算符 % 的优先级高于加法。那么让我们分解一下您的总和:

cypher = ((next - 65) + (key[i] - 65) % 26) + 65;

这将像这样处理:

cypher = ( next - 65 )
+ ( (key[i] - 65) % 26 )
+ 65;

您真正想要的是让模数作用于整个事物:

cypher = ( (next - 65 + key[i] - 65) % 26 ) + 65;

您实际上不需要那组外括号,但它使它更容易阅读。

关于c++ - 替换加密不返回字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40602434/

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