この記事を理解して理解するために、いくつかの用語を紹介します。
- N-自然数
- ワード-Nビット、つまりワードにグループ化されたNビット(バイトは8ビットワードです)
- 単語の組み合わせは2 ^ N(2のN乗)(バイトの256の組み合わせ)です。
- ブロック(文)-N * 2 ^ N(単語*単語の組み合わせ)
- ブロック内の組み合わせ-2 ^(N * 2 ^ N)
- ブロック内の一意の単語-2 ^ N
- ブロック割り当てテーブル-N行(1行にN個の一意の単語があるブロックの組み合わせの数)
- エントリテーブル-N行(N個の一意の単語が連続したブロックの出現数)
- 着信ストリーム-情報内の有限バイト数
ブロック内の一意の単語の定義-ブロック内の単語の繰り返しのない組み合わせの数。 例:
1 1 1 1 1 1 1 1
8 8 8 8 8 8 8 8
1 8 2 5 1 5 1 2
4 6 7 3 3 3 3 3
N = 3のブロックで一意の単語を見つける
ブロック内のすべての組み合わせを調べた後、ブロック分布の表を取得します。 例:
1 4
2 84
3 144
4 24
256 (8 ) - 2^(N*2^N)
ブロック割り当てテーブルN = 2
01 16
02 7864080
03 23996064960
04 7504175995680
05 574579238688000
06 15768930151054080
07 189225474428390400
08 1111400775560275200
09 3407360398041600000
10 5630409646557696000
11 5045340384103219200
12 2403608358767616000
13 577538743541760000
14 62977597562880000
15 2510734786560000
16 20922789888000
18446744073709551616 (64 ) - 2^(N*2^N)
ブロック割り当てテーブルN = 4
N = 4以上の場合、数秒でブルートフォースによるブロック分布のテーブルを取得できなくなります。
アルゴリズムの最初の部分は、着信ストリームを分析することです(エントリテーブルを作成します)。 入力ストリームはブロックに分割され、一意の単語の数がチェックされます。 一意の単語番号は、エントリテーブルの行番号として使用されます。 行の値は1ずつ増加します。 オカレンスのテーブルを受信すると、いくつかのプロパティを確認できます。 いくつか例を挙げます。

N = 8のオカレンステーブルに従ってプロットすると、 ここからファイルをダウンロードできます。

N = 8のオカレンステーブルに従ってプロットすると、 ここからファイルをダウンロードできます。

N = 8のオカレンステーブルに従ってプロットすると、 ここからファイルをダウンロードできます。
この方法でデータストリームを分析すると、複数のブロックを取得していない圧縮および暗号化されたデータに未使用の行があることがわかります。ブロックは一意の単語で区切られているため、含まれていないブロックの数は配布テーブルで確認できます
配布テーブルの行では、エントリテーブルの行にゼロがある場合はゼロが書き込まれ、(エントリテーブル内の)ゼロ以外の番号がある行は変更されません。 変更されたエントリテーブルを要約すると、使用されているブロックの数がわかります。 次に、着信ストリームはベース番号システムに従ってエンコードされます。これにより、これにより前のステップで取得された量もデータを圧縮します。 エンコードされたストリームから逆データ変換を取得するには、分散テーブルで使用される行の所有権を担当する小さなNビット辞書が必要です。 圧縮は効果的ではありませんが、従来の圧縮および暗号化アルゴリズムによって既に圧縮されているデータのサイズを削減できることを証明しています。
特別なアルゴリズムのデモ
「冗長性のない」データのデータ圧縮を改善する可能性を示すために作成されたビデオ。 これは、ソースデータに冗長性を作成する特別なアルゴリズムです。
PS最初のアルゴリズムの実行時間が長すぎたため、ビデオが機能しませんでした。 2番目のアルゴリズムはビデオに示されています。 BTWアルゴリズムと同じ考え方で機能します。つまり、最初にデータを準備し、次にこのデータを古典的なアルゴリズムで圧縮します。