从基本视图中隐藏字符串(例如记事本) 我试图在我的C++程序中隐藏一些字符串,我注意到如果我的“程序”打开了(例如:记事本),人们可以查看字符串,编辑值,然后保存,然后重新运行包含更改字符串的程序,并且编辑的字符串将取代我的原始文本。
我不寻找任何非常先进的东西,因为事实上我只是试图阻止人们编辑在记事本中打开“程序”时可以轻松查看的文本,我不是试图阻止任何“黑客”这样做,只是试图在我的“程序”中编辑文本 我试过这样的方法:从基本视图中隐藏字符串(例如记事本) 我试图在我的C++程序中隐藏一些字符串,我注意到如果我的“程序”打开了(例如:记事本),人们可以查看字符串,编辑值,然后保存,然后重新运行包含更改字符串的程序,并且编辑的字符串将取代我的原始文本。,c++,C++,我不寻找任何非常先进的东西,因为事实上我只是试图阻止人们编辑在记事本中打开“程序”时可以轻松查看的文本,我不是试图阻止任何“黑客”这样做,只是试图在我的“程序”中编辑文本 我试过这样的方法: char hiddentxt[10]; strcat(hiddentxt,"h"); strcat(hiddentxt,"e"); strcat(hiddentxt,"l"); strcat(hiddentxt,"l"); strcat(hiddentxt,"o"); 但是,我敢肯定,当涉及到巨大的字符串
char hiddentxt[10];
strcat(hiddentxt,"h");
strcat(hiddentxt,"e");
strcat(hiddentxt,"l");
strcat(hiddentxt,"l");
strcat(hiddentxt,"o");
但是,我敢肯定,当涉及到巨大的字符串时,这是非常耗时的(注意:显然这不是一种隐藏字符串的“安全”方法,但请注意,我并不是要阻止黑客编辑字符串,只是那些不知道自己在做什么的人)
我也研究过使用异或,但在我的例子中,它似乎不是一个好的解决方案
任何帮助都将不胜感激 字母表编号/字母表中的位置
您可以将字母表中的每个字母转换为该字母所在的数字
- a=1
- b=2
- z=26
另存为:MyStringEncoder.cpp并编译 这是脆弱的,不仅因为它可以很容易地被暴力强迫。但也因为如果你把英语中最常用的字母(‘e’)和密码中最常用的字母,你已经有了26个字母中的一个 笔记 但是,请注意,这两种方法都很弱且不安全。 您试图做的是通过模糊处理实现安全性。并建议
您可能感兴趣的另一件事是。在键盘上将每个字符替换为其右侧的字符。然后“hello”变成“jr;;p”。(最右边的字符变为最左边的字符,即“/”变为“z”)。实现解码函数,然后使用常量,即,代替
print("Hello world\n");
你需要
static const char* sz_hello_world = decode("Jr;;p ept;f\n");
printf(sz_hello_world);
不应触摸诸如“\n”或“”之类的特殊字符
警告:由于解码函数将分配内存,因此每次解码只需调用一次,以避免内存泄漏。这就是为什么您需要
静态常量
随机想法的原因:每个字节值+=128(使用无符号变量防止UB),它被调用,但从未真正工作过。如果你想让你的字符串“不可读”,那么将它们存储在一个单独的加密文件中。这可能是与其他能看到你的代码的人的奇怪关系的重复吗?@JoachimPileborg,就像我说的,我并没有试图阻止任何有编程经验的人更改文本值,只是人们打开我的C++文件,比如记事本,我不知道为什么会有人?谢谢你提供的信息,这回答了我的问题:)@JeffCoderr很高兴听到这个消息很高兴我能帮助你。如果你想做简单的加密,很容易实现,那么使用XXTEA可能比rot13更好,因为rot13非常容易破解。XXTEA至少会让脚本小子们忙上几分钟,而不是几秒钟;)
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
//Function to encrypt
string toCaesar(string s, int key) {
string alphabet = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < s.length(); i++) {
for (int j = 0; j < alphabet.length(); j++) {
if (s[i] == alphabet[j]) {
int index = j + key;
if (index >= 26) index = index - 26;
s[i] = alphabet[index];
break;
}
}
}
return s;
}
//Function to decrypt
string decryptCaesar(string s, int key) {
string alphabet = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < s.length(); i++) {
for (int j = 0; j < alphabet.length(); j++) {
if (s[i] == alphabet[j]) {
int index = j - key; //Only difference is the MINUS here
if (index >= 26) index = index - 26;
s[i] = alphabet[index];
break;
}
}
}
return s;
}
int main() {
int inputKey;
string stringToEncrypt;
cout << "Give your key: ";
cin >> inputKey;
cout << "String to encrypt: ";
cin >> stringToEncrypt;
cout << toCaesar(stringToEncrypt, inputKey) << endl;
cout << decryptCaesar("fgh", 5);
}
print("Hello world\n");
static const char* sz_hello_world = decode("Jr;;p ept;f\n");
printf(sz_hello_world);