【发布时间】:2014-08-01 12:52:49
【问题描述】:
我编写了一个简单的程序来加密和解密消息 XOR 密码。 我将范围限制为字母表中的字符(小字符)。 加密工作正常,但解密后消息不匹配。 如果我在不限制字母的情况下运行程序(没有这个 %26 + 97),它可以正常工作。
#include <iostream>
using namespace std;
int main(){
char message[7] = "string";
char key[5] = "abcd";
char encrypted[7];
size_t sizeTab = strlen(message);
cout << sizeTab << endl;
cout << "ENCRYPTION" << endl;
int i = 0;
do{
encrypted[i] = ((message[i] ^ key[i%4])%26 + 97);
}while(i++ < sizeTab - 1);
encrypted[sizeTab] = '\0';
cout << encrypted << endl;
cout << "DECRYPTION" << endl;
i = 0;
do{
encrypted[i] = ((encrypted[i] ^ key[i%4])%26 + 97);
}while(i++ < sizeTab - 1);
cout << encrypted << endl;
return 0;
}
例如,如果我有输入消息:string 加密后:swrnpf 解密后:svrkre
我做错了什么,我应该纠正什么? 感谢您的帮助。
【问题讨论】:
标签: c++ encryption cryptography xor