// Var
std::string text = "string";
const char *nn = text.c_str();
// Encryption
int x = (int(nn));
x = x * 3 - 100 * 2;
cout << "Numerical numbers: " << x << endl;
cout << "String: " << (char(x)) << endl;
// Decryption
x = (x - 100 * 2) / 3;
cout << "Numerical numbers: " << x << endl;
cout << "String: " << (char(x));
答案 0 :(得分:1)
我想你想加密这个字符的所有字符:
std::string text = "string";
在这种情况下,您需要一个整数向量而不是单个int来存储每个编码字符:
std::vector<int> encrypted;
由于您知道向量的最终大小,您可以预先准备向量以分配必要的空间,但这是可选的:
encrypted.reserve(text.size());
比你必须逐个浏览字符,对它们进行编码并将它们放到矢量中:
for(auto &ch : text) {
int x = ch * 3 - 100 * 2;
encrypted.push_back(x);
}
生成的矢量可以这样打印:
cout << "Numerical numbers: ";
for(auto x : encrypted) { cout << x << ", "; }
cout << endl;
解密类似:
std::string decrypted;
decrypted.reserve(encrypted.size());
for(auto &x : encrypted) {
char ch = (x + 100 * 2) / 3;
decrypted += ch;
}
答案 1 :(得分:0)
除非您必须使用公式x * 3 - 100 * 2
进行加密/解密,否则我建议您使用XOR。
#include <iostream>
#include <string>
int main()
{
// Var
std::string text = "string", encrypt, decrypt;
// Encryption
for (int i = 0; i < text.length(); i++)
{
encrypt += text[i] ^ '1';
}
// Decryption
for (int i = 0; i < encrypt.length(); i++)
{
decrypt += encrypt[i] ^ '1';
}
std::cout << "original text: " << text << std::endl << "encrypted text: " << encrypt << std::endl << "decrypted text: " << decrypt;
}
上述代码的输出为:
原文:字符串
加密文字:BECX_V
解密文字:字符串
Here是上述代码的一个工作示例。