2

こんにちは、C++ でコードを作成しようとしています。このコードは、テキスト ファイルを簡単に暗号化して新しいファイルに保存するだけです。そして、私がこのコードをコンパイルすると、アンチウイルスは言う、それはウイルス/スパイウェア Gen:Variant.Kazy.20825 です。なぜウイルスなのかわかりません。これが私のコードです:

#include <iostream>
#include <fstream>
#include <string>


using namespace std;

void controlParameters(int argc){  //check if input parameters are ok
    if(argc == 1){
        cout << "Pokud chcete text zasifrovat, spustte program s parametrem: -enc \"Nazev_souboru.txt\"\n";
        cout << "Pokud ho chcete desifrovat, spustte program s parametrem: -dec \"Nazev_souboru.txt\"\n";
    }else if(argc > 3){
        cout << "Moc parametru. Spustte si program bez parametru.\n";
    }else if(argc < 3){
        cout << "Chybi jeden parametr. Spustte si program bez parametru.\n";
    }else{
        cout << "Vsechno vypada zatim dobre\n";
    }
}

void encryption(string &file);  //encrypt text file
void decryption(string &file);  //decrypt text file
bool controlFile(string &file); //check if file can be opened

int main(int argc, char **argv){
    controlParameters(argc);
    string file;
    file = argv[2];
    if(controlFile(file)){

    }else{
        cout << "Soubor nesel nacist." << endl;
        return -1;
    }
    cout << "Ukonceno.\nZmacknete ENTER pro pokracovani..."<<endl;
    cin.get();
    return 0;
}

bool controlFile(string &file){
    ifstream ifs;
    ifs.open(file);
    if(ifs.is_open()){
        ifs.close();
        return true;
    }else{
        ifs.close();        
        return false;
    }
}

void encryption(string &file){
    ifstream ifs;
    ofstream ofs;
    string line;    
    ifs.open(file);
    ofs.open("encrypt.txt");
    if(ifs.is_open()){
        while(!ifs.eof()){
            getline(ifs,line);
            int a = line.length();
            int i = 0;
            while(i < a){               
                ofs << ((char)(line[i]^100));               
            }
            line.clear();
            ofs << "\n";
        }
    }else{
        cout << "Nelze nacist soubor" << endl;
    }
}

void decryption(string &file){
    ifstream ifs;
    ofstream ofs;
    string line;
    ifs.open(file);
    ofs.open("decrypt.txt");
    if(ifs.is_open()){
        while(!ifs.eof()){
            getline(ifs,line);
            int a =line.length();
            int i = 0;
            while(i < a){               
                ofs << ((char)(line[i]^100));               
            }
            line.clear();
            ofs << "\n";
        }
    }else{
        cout << "Nelze nacist soubor" << endl;
    }
}
4

2 に答える 2

5

ソース管理ディレクトリをウイルス スキャナーから除外することをお勧めします。ソース管理アクションの実行中またはコンパイル中に誤検知がなくても、パフォーマンスとロックの問題を引き起こす可能性があります(私はそれが何度か発生するのを見てきました)。

したがって、プログラミング エクスペリエンスの信頼性を高めるためだけに、これらのディレクトリのウイルス スキャナを無効にしてください。

誤検知を回避するために、リリースされた最終バージョンの実行可能ファイルをスキャンすることをお勧めします。結局のところ、ウイルス スキャナーが詰まるのがあなたのせいでなくても、ユーザーに良い印象を残すことはできません。

于 2013-01-22T14:38:13.157 に答える
4

ウイルス対策ソフトウェアは、「ヒューリスティック」を使用して、ウイルスとそうでないものを判別します。そのため、疑わしいと判断したことを実行するファイル内のパターンを探します。コードに直接問題があるとは思わないので、「誤検知」であると思われます。私は個人的にウイルス対策ソフトウェアが好きではありません.解決するよりも多くの問題を引き起こします...

ちなみに、「出力ファイル名」を暗号化/復号化関数に追加して、それらを1つの関数にすることができます! ;)

于 2013-01-22T14:27:50.363 に答える