2

ファイルの暗号化を行うために、ファイルを固定サイズのブロックに分割するよう求められました。より具体的には、バイナリまたはテキストの可能性があるファイルがたくさんあります。

これらのファイルを入力として取り、各ファイルを多数の 32 ビット ブロックに分割し、32 ビット ブロックを送信するユーザー プログラムを作成するように依頼されました。

シナリオは、ユーザーがファイルをブロックに分割し、(RSA を使用して) ブロックを暗号化し、暗号文をサーバーに送信することによって、リモート サーバーにファイルをバックアップすることです。

2 つのファイルを考えてみましょう。1 つは 33 ビット テキスト ファイル A で、もう 1 つは 34 ビット バイナリ ファイル B です
。A は 2 つの 32 ビット ブロック A1 と A2 に分割できます (A2 の最後の 31 bis はすべて 0 です)。
B は、2 つの 32 ビット ブロック B1 と B2 に分割できます (B2 の最後の 30 ビットはすべて 0 です)。A1 (または A2、B1、B2) を取得すると、A1 を 32 ビット整数と見なし、RSA 暗号化を実行できます。

RSA 暗号化のコードを書くことはできますが、残念ながら、A1、A2、B1、B2 を取得するための C コードの書き方がわかりません。

サンプル コードの作成を手伝ってくれる人や、リファレンスを教えてくれる人はいますか?

4

2 に答える 2

0

以下は、C コードに簡単に変換できる高レベルのアルゴリズムです。

char* get_Next_Block_From_File(FILE *fp, int seek_offset, int blockSize)
{
    // Open file
    // lseek to seek_offset

    len = blockSize / 8;
    bit_pos = blockSize % 8;

    for (i=0; i<len; i++) {
        copy_from_file_to_local_buffer_byte_by_byte();
    }

    if (bit_pos) {
        byte[i] <<= (8 - bit_pos);
        append_byte_to_local_buffer();
    }

    return local_buffer;
}
于 2012-12-21T06:12:52.417 に答える