C ++ファイル暗号化記録と解決の問題

(最初のブログ、私は誰もが!初心者をサポートすることを願って、または問題より深い洞察場合は、してください、共有、コメント領域に記入してください!)

問題のI.説明

  CIN(ファイル)から読み込み、COUT(ファイル)にエンコードされた文字を書き込み、暗号化プログラムを書きます。

  あなたはこの単純な暗号化方式を使用することがあります:文字cの暗号化形式は  、C ^キー、[i]は、  キーは  コマンドライン引数として渡された文字列です。プログラムは、内の文字使用  のキーを  すべての入力が読み込まれるまで周期的に。同じキーで再暗号化する符号化されたテキストは、元のテキストを生成します。どのキー(またはnull文字列)が渡されない場合は、何もencrptionは行われません。

第二に、問題が解決され、

  1.thinking

    (読み取り用)in.txt、out.txtを(暗号化結果メモリ)、original.txt(復号化された結果が格納されている):3つのファイルを作成します。

    読み取りが失敗した場合は、例外処理、その後の暗号化操作のために、ファイルをお読みください。

  2.important

    ①。(主に^排他的論理和演算はこちら)ビット操作C ++を学びます

    ②。いくつかのファイルの処理

  3.process

    ①。XOR演算について

      

      図から分かるように、戻り値は、XOR演算int型、文字^ int型で、実際のchar暗黙の型変換に行きました。

      加えて、我々は中out.txtを読んでからintにin.txtファイルから文字を読み取る必要があります。

      1または異なる数の二倍自体:いくつかの特定のアプリケーションへの排他的論理和演算を持っています。2.排他的ORジャム元の値0の数(10011001 00000000 ^ - > 10011001)

    ②。ファイルについて読み込み、EOF

      EOFの詳細説明:https://www.cnblogs.com/dolphin0520/archive/2011/10/13/2210459.html

      

 

      このファイルは、それぞれがEOFを読み出した後かどうかを判断する必要があり、ロードされます。もちろん、それは特定の状況に応じて書かれています。この質問では、本体(!F_in.eofは())ファイルが読み込まれた場合でも、予測できない問題が発生するが、読み取り書き込みサイクルは、条件を決定するが、サイクルが終了していない場合は!

 

  4.result

      共有ソース

 

1の#include <iostreamの>
 2の#include <fstreamの>
 3の#include <CStringの>
 4  
5  使用 名前空間STDを、
6  
7  INTメイン(int型 ARGC、チャー ** ARGV)
 8  {
 9      はifstreamフィン(" in.txt " )。
10      もし(!{fin.is_open())
 11          はcout << " ファイルを開くことができません\" in.txt \」" ;
12          リターン - 1 13      }
 14 
15      のfstream FOUT(" out.txtを" );
 16      IF(!{Fout.is_open())  
 17。          COUT << " を開くことができませんファイル\" out.txtを\ " " ;
 18は         リターン - 1。;
 19      }
 20である 
21は     IF(strlenを(ARGV [ 1 ])== 0 ){//コマンドラインパラメータを受信していない場合、暗号化と復号化は実行されない
 22である         文字列TEMP;
 23は          COUT << " ..ノー暗号鍵" << ENDL;
 24          しばらく(FIN >>TEMP){
25              FOUT << TEMP。
26          }
 27          リターン 0 28      }
 29  
30      チャーTEMP。
31      INT iは= 0 32  
33      ながら(フィン。得る(TEMP))//加密运算
 34      {
 35          FOUT <<(TEMP ^のargv [ 1 ] [strlenを(ARGV [ 1 ]) - strlenをI%(ARGV [ 1 ])])<< '  ' ;
36          I ++ ;
37      }
 38  
39     fin.close();
40      fout.close()。
41  
42      裁判所未満は<< " 暗号化が行われました。" << てendl
 43          << " 今すぐ再暗号化を開始します。" << てendl;
44  
45      はifstreamのf_in(" out.txtを" )。
46      もし(!{f_in.is_open())
 47          はcout << " ファイルを開くことができません\" out.txtを\」" ;
48          リターン - 1   
     F_OUTのofstreamの(" original.txt " ;)
 52は、     IF(!{f_out.is_open())
 53は、          COUT << " を開けませんファイル\" original.txt \ " " ;
 54は、         リターン - 1。;
 55      }
 56は、 
57れる      I = 0 ;
 58      int型TEMP_1;
 59      ながら(f_in >> TEMP_1){//復号化演算、キャストがここで必要とされる出力キャラクタ
 60          F_OUT << チャー((^ TEMP_1 ARGV [ 1。 [strlenを(ARGV [] 1。 ] ) - I%strlenを(ARGV [ 1])]))。
61          I ++ ;
62      }
 63  
64      COUT << " 再暗号化を行っている。" << ENDLと、
65      リターン 0 ;
66 }

 

 

 

    

    

おすすめ

転載: www.cnblogs.com/cs-weilai/p/12507632.html