C / C ++中的字符串管理

时间:2012-09-05 15:20:59

标签: c++ c string obfuscation name-mangling

我正在寻找一种在C / C ++中进行字符串修改的方法。该软件的要求是不存在纯文本字符串(不需要加密,只需要加密),我正在努力找出这个要求阻力最小的路径。通过相对容易获取的工具来覆盖类名称的混淆和修改,但字符串修改似乎是一个更难跳的障碍。

如果这是标准答案,我对软件的后期处理感到满意。他们的工具是否已经编写完成,或者我是否需要修改我自己的脚本来编写字符串?

我也明白,在休息时纠正字符串并不是真正的安全。我明白了,你可能会得到它,但是它是对软件的要求所以我必须满足它。

谢谢! 斯蒂芬

2 个答案:

答案 0 :(得分:1)

一个简单的ROT13加密器/解密器。无需编写解密功能。它被称为ROT13,因为它只是将13个字符旋转回原始状态。

#include <iostream>
using namespace std;


  //encrypt or decrypt string
void ROT13_Encrypt_Decrypt_String(char str[]){

for( int i=0; str[i] != '\0'; i++ ){
    if(str[i] >= 'a' && str[i] <= 'm'){
        str[i] += 13;
    }

    else if(str[i] > 'm' && str[i] <= 'z'){
        str[i] -= 13;
    }

    else if (str[i] >= 'A' && str[i] <= 'M'){
        str[i] += 13;
    }

    else if(str[i] > 'M' && str[i] <= 'Z'){
        str[i] -= 13;
    }

}
}


int main()
{
    char mystring [] = "Hello World!";
    cout << "Original string: " << mystring << endl;

    //encrypt   
    ROT13_Encrypt_Decrypt_String(mystring);   

    cout << "Encrypted string: " << mystring << endl;

    //decrypt  
    ROT13_Encrypt_Decrypt_String(mystring);

    cout << "Decrypted string: " << mystring << endl;

    return 0;
}

输出:

Original string: Hello World!
Encrypted string: Uryyb Jbeyq!
Decrypted string: Hello World!
Press any key to continue

答案 1 :(得分:1)

如果您正在处理ASCII文本,只需在每个字符上设置第7位以对其进行反明文,然后取消设置将其转换为纯文本。