0

単純な行列乗算ベースの暗号化に関する大学のプロジェクトに取り組んでいます。

プロジェクトの概要はこのようなものです。

テキスト ファイルから行列に暗号化キーを掛けた行列 = 暗号化されたファイル。

暗号化されたファイルから行列にキー行列の逆数を掛けたもの = 復号化されたファイル。

しかし、もう少し進んで、任意のファイル(テキスト、mp3、gif など)を処理できるようにしたいと考えています。

私はこの問題を解決するために何時間も研究してきましたが、少しイライラし始めています.

私が考えることができる最善の (そして唯一の) 方法は、プログラムが生のバイナリを読み取り、それに対して暗号化を実行することです。

では --> 質問:

  1. ファイルから生のバイナリを抽出し、行列に入れ、行列の乗算を実行し、(本質的に) バイナリをファイルに書き戻すことはできますか?

  2. また、さまざまなコンピューターやプラットフォームでのそのような方法の実行可能性は何ですか? (おそらく、バイナリからintに変換し、復号化時に元に戻すと、変更される可能性があると考えています-異なるコンピューターでの異なるサイズの割り当てなど?)

また、より良い解決策についての意見を歓迎します

---> しかし、基本的なアルゴリズムは行列の乗算に基づいている必要があります。

私のコード:

int writetomatrix(int current_variable)
{
    if (counter == 9){
        counter=0;
        b=0;
        a=0;}

    if (b==3) b=0;
    if (a==3) {b++;
                a=0;}
    counter++;
    B[a][b]=current_variable;
    a++;

}
    int main () {
        int *buffer= new int[1];
        ifstream input;
        input.open ("input.txt",ios::in|ios::binary);
        input.read ((char*)&buffer, 1);
        writetomatrix(buffer);
    }

私が得るエラー:

initializing argument 1 of ‘int writetomatrix(int)’
4

1 に答える 1

0

freadcharまたはintの配列を使用してバイナリファイルを読み取ることができます。バイト順序が同じである限り、任意のファイルを読み取って書き戻すことができます。読んだバイトや単語でやりたいことができます。sizeofintのサイズを知るために使用できます。今日のほとんどのプラットフォームでは、4バイトです。

于 2012-03-07T22:08:08.220 に答える