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'.
我的作业是制作一个 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'.