3

C/C++ で文字列マングリングを行う方法を探しています。ソフトウェアの要件は、プレーンテキスト文字列が存在しないことです (暗号化は必要なく、マングリングのみ)。この要件に対する抵抗が最も少ないパスを見つけようとしています。クラス名の難読化とマングリングは、比較的簡単に入手できるツールでカバーされていますが、文字列のマングリングは、ジャンプするのが難しいハードルのようです。

それが標準的な答えであれば、私はソフトウェアの後処理に満足しています。彼らのツールはすでにこれを行うために書かれていますか、それとも文字列を変更するために独自のスクリプトをハックする必要がありますか?

また、安静時の文字列のマングリングは真のセキュリティではないことも理解しています。私はそれを理解しています、そしてあなたはおそらくそれを理解していますが、それはソフトウェアに課せられた要件なので、私はそれを満たす必要があります.

ありがとう!ステフ

4

2 に答える 2

2

シンプルなROT13暗号化/復号化。復号化関数を作成する必要はありません。13文字を元の状態に戻すだけなので、ROT13と呼ばれます。

#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
于 2012-09-05T16:56:01.443 に答える
1

ASCII テキストを扱っている場合は、各文字の 7 番目のビットを設定して平文を解除し、設定を解除して平文に変換します。

于 2012-09-16T00:59:58.117 に答える