C++ 输出字符串包含奇怪的字符
此代码对字符串进行加密并输出加密后的字符串。但是,它会输出我不理解的字符,如“^XC[^CEA”^ 当我通过调试器运行应用程序时,输出字符串包含这些字符,\x2\x1a\x1\x1e\x1c\u R\x2 代码在这里C++ 输出字符串包含奇怪的字符,c++,C++,此代码对字符串进行加密并输出加密后的字符串。但是,它会输出我不理解的字符,如“^XC[^CEA”^ 当我通过调试器运行应用程序时,输出字符串包含这些字符,\x2\x1a\x1\x1e\x1c\u R\x2 代码在这里 string key("fydfhjg74d2u1oj4134wq87uj97h31cx"); string encrypt(string msg, string key) { // Make sure the key is at least as long as the
string key("fydfhjg74d2u1oj4134wq87uj97h31cx");
string encrypt(string msg, string key)
{
// Make sure the key is at least as long as the message
string tmp(key);
while (key.size() < msg.size())
key += tmp;
// And now for the encryption part
for (string::size_type i = 0; i < msg.size(); ++i)
msg[i] ^= key[i];
' return msg;
}
string decrypt(string msg, std::string key)
{
return encrypt(msg, key); // lol
}
int main()
{
ofstream appfile("C:\\Users\\123024594\\Desktop\\cas.txt", ios_base::app);
string message;
cout << "Input string to be ciphered: ";
cin >> message;
cin.get();
cout << std::endl;
appfile << "Ciphered string: " << encrypt(message, key);
}
字符串键(“fydfhjg74d2u1oj4134wq87uj97h31cx”);
字符串加密(字符串消息、字符串密钥)
{
//确保密钥至少与消息长度相同
字符串tmp(键);
while(key.size()消息;
cin.get();
cout因为您对消息和密钥字符串的各个字符进行了按位异或运算。由于按位运算符不一定产生可打印字符,因此您得到的是非打印字符。//现在是加密部分
// And now for the encryption part
for (string::size_type i = 0; i < msg.size(); ++i)
msg[i] ^= key[i]; // msg[i] ^ key[i]
对于(string::size_type i=0;i
字符的按位异或(ASCII值)可产生可打印字符和不可打印字符,具体取决于值。使用按位异或。这可产生32以下的ASCII字符(32是空格,第一个可打印ASCII字符)。
如果您想要打印,您可以在Base64中对结果进行编码或更改加密,使结果不能低于32。所以您的实际问题是…?问题是这些字符是什么