661 :
デフォルトの名無しさん:
ストリーム暗号を作っているのですが、手動でやると復号できるのに
プログラムでやろうとするとうまくいきません。2回同じ暗号化を
すれば元に戻るはずなのにそうなりません。
出来ればコマンドラインで暗号化復号化の選択ができるようにしたいです。
初心者でよくわからないことが多いのですがよろしくお願いします。
if (argc < 2) { printf("error\n"); return 1;}
sprintf(fin, "%.255s", argv[1]);
sprintf(fout, "%.250s.perm", argv[1]);
if(d==0){
fp=fopen("2.perm","wb");
fq=fopen("2","rb");
}else{
fp=fopen("2.txt","wb");
fq=fopen("2.perm","rb");
}
662 :
デフォルトの名無しさん:2010/09/24(金) 12:49:30
暗号化するときに
fp=fopen(fout,"wb");
fq=fopen(fin,"rb");
とするのはいいのですが、復号のときに暗号化されたファイルを
読み込んで処理しても復号できない。
何のデータにばけているのかわかりません。
まず暗号化が正しく行われているかどうかを確認するべき
プログラムで暗号化してできた暗号文を、手作業で暗号化したものと比較してみる
暗号文が間違ってるなら、そんなもの復号できるわけないからな
664 :
デフォルトの名無しさん:2010/09/24(金) 13:08:34
暗号文は正しいです。手動でプログラムのファイル名を書き換えて
復号すれば成功します。プログラムで自動化しようとして失敗してます。
まとめて自動化したとき書き込み後fcloseせずに読み込んだとかか?
fpは
fp=fopen("2.perm","wb");
fp=fopen("2.txt","wb");
fp=fopen(fout,"wb");
の3通りあるのか? どういう使い分けで?
どこの段階でおかしくなってるかデータを出力して確認すれば。デバッグ能力を養うチャンスだ。答えだけポンと与えられてもまたすぐ行き詰るぞ
668 :
デフォルトの名無しさん:2010/09/24(金) 13:20:08
今はうまく動かないのでif文で条件分岐してます。
if(d==0){ 暗号化用
fp=fopen("2.perm","wb");
fq=fopen("2","rb");
}else{ 復号化用
fp=fopen("2.txt","wb");
fq=fopen("2.perm","rb");
}
fp=fopen(fout,"wb");
fq=fopen(fin,"rb");
これは標準入力からファイル名を指定したときの残骸です。
669 :
デフォルトの名無しさん:2010/09/24(金) 13:25:39
./a.exe file file.perm 暗号化
./a.exe file.perm file.txt 復号化
これでうまくいくはずなのに、そうなりません。
じゃあコンピューターが壊れているんだろう。買い直せばいいんじゃないかな