encryption/decryption 程序 C++

encryption/decryption program C++

我的作业是制作一个 encrypting/decrypting 程序,用户可以在其中输入消息和一个具有相同数量字母的键。 该程序加密消息并显示它,然后解密密码并再次显示消息。 我在解密密码时遇到问题,当我写 HELLO 并且密钥是 JHBZA 时,它显示 HELPO 而不是 HELLO。代码中有什么问题?

       #include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main()
{
    char message[100], key[100], encryption[100], decryption[100];
    int msgvalue [100], msgvalue2 [100], keyvalue [100], keyvalue2 [100], sum[100], decryptvalue[100], decryptvalue2[100];
    int i=0;

cout << "Enter the message: ";
cin.getline(message, 100);
while(message[i] != '[=11=]')
{

    msgvalue[i] = message[i];
    msgvalue2[i] = msgvalue[i] - 65;
    i++;
}

i=0;

cout << "Enter the key: ";
cin.getline(key, 100);
while(key[i] != '[=11=]')
{
    keyvalue[i] = key[i];
    keyvalue2[i] = keyvalue[i] -65;
    i++;
}



cout << "The message is: " << setw(15) << message << endl;
for(int i = 0; msgvalue[i] > 1; i++)
{
sum [i] = msgvalue2[i] + keyvalue2[i];
sum[i] = sum[i] % 26;
}



cout << "The cipher is: " << setw(12);

for(int i = 0; msgvalue[i] >= 65 && msgvalue[i] <= 90; i++)
{
 encryption[i] = sum[i] + 65;

 cout << encryption[i];
}


cout << endl << "The message again is: " << setw(12);

for(int i = 0; msgvalue[i] >= 65 && msgvalue[i] <= 90; i++)
{
decryptvalue[i] =(sum[i] - keyvalue2[i]) % 26;

if (decryptvalue[i] < 0)
{
    decryptvalue[i] = -decryptvalue[i] ;
}


decryptvalue2[i]  = decryptvalue[i] + 65;

decryption[i] = decryptvalue2[i];

cout << decryption[i];

}


    return 0;
}

'Z' = 25 'L' = 11

因此 (25 + 11) % 26 = 10

你去解密的时候,(10 - 25) % 26 = -15

然后你取它的绝对值,将它设置为 15。相反,当解密值 < 0 时正确的做法是加 26。这会将 -15 变成 11。11 = 'L'.