0

任意の数のビットをパックする良い方法は何でしょうか? 特定の文字のみを含むことがわかっている文があり、暗号化したいと考えています。したがって、オプションは、これらの文字を表すために使用するビットを減らし、その過程で文字を暗号化することです。

std::bitset を見ましたが、ビットセットのサイズを定数として指定する必要がありますが、これはできません。

また、パックされたビットを文字に変換して出力を不明瞭にする方法も知りたいです。

つまり、A を 1000 にパックし、B を 0100 にパックすると、結果の 8 ビットのパックは 1000 0100 となり、これは別の文字になります。

ところで、これは強力な暗号化形式であるとは想定されていません

4

3 に答える 3

0

あなたが探しているのはdynamic_bitsetです。似std::bitsetていますが、サイズを動的に変更できます。

また、std::vector<bool>ビットセットとして実装するという少し残念な歴史的決定の副作用として、必要なことを実行する which を使用することもできます。

それが役に立てば幸い。幸運を!

于 2013-05-04T14:30:21.047 に答える
0

文字通り 16 文字のアルファベット (AP など) のみをエンコードする場合は、ルックアップ テーブルを作成できます。

unsigned char table[256] = {};
table['A'] = 0x0;
table['B'] = 0x1;
// ...
table['P'] = 0xF;

xこれで、2 文字ごとに次のようにエンコードできますy

table[x] * 0x10 + table[y]

おそらく、これを一意のパディング スキームと組み合わせて、入力データを偶数文字までパディングする必要があります (PKCS パディングのいくつかのバリアントが機能するはずです)。

于 2013-05-04T14:31:56.103 に答える