【解決方法】データ圧縮を試みています


発明しようとしているのですが..

(再帰的ロスレスランダムデータ圧縮)

彼らが言う ; それは不可能だということ…
私は彼らが間違っていることを証明しようとしてきました…

私が試したこと:

================================================= =
ARZ (アルバート・レディット・ジップ)

(再帰的ロスレスランダムデータ圧縮)

あらゆるサイズのファイルを約 2600 バイトまで圧縮します。
FreeBASIC で書かれたコード..
================================================= =

ベーシック
dim as ubyte count = 0
do
    if len( bits ) mod 7 <> 0 then bits+= "0" : count+= 1 else exit do
loop

chrs = string( len( bits ) \ 7 , "0" ) + chr( count )
dim as longint place = 0
dim as string m1 , m2
for a as longint = 0 to len( bits ) - 1 step 7

    if bits[ a + 0 ] = 49 then m1 = "1000" else m1 = "0000"
    if bits[ a + 1 ] = 49 then m1[ 1 ]+= 1
    if bits[ a + 2 ] = 49 then m1[ 2 ]+= 1
    if bits[ a + 3 ] = 49 then m1[ 3 ]+= 1
    
    if bits[ a + 4 ] = 49 then m2 = "101" else m2 = "111"
    if bits[ a + 5 ] = 49 then m2[ 2 ]-= 1
    if bits[ a + 6 ] = 49 then m2+= "0"
    
    m1+= m2
    
    chrs[ place ] = val( "&B" + m1 ) : place+= 1
                
next
bits = ""

chrs = Zlibrary.pack( chrs )

loops+= 1

=============================================
これ以上小さくならなくなるまでループし続けます。
実際の圧縮を行うために Zlib.dll を呼び出しています…
=============================================

解決策 1

引用:

あらゆるサイズのファイルを約 2600 バイトまで圧縮します。

このステートメントだけでは、自分が何をしているのか理解できず、その記述方法や実行内容に関係なく、アルゴリズムに大規模な衝突問題が発生していることを意味します。

たった 20,800 ビットで、ほぼ無限の数のバイトを、ほぼ無限の組み合わせで表現できるとおっしゃいました。

でたらめ。

最良の場合でも、これにより圧縮ではなく暗号化ハッシュが生成されます。 まったく同じ結果ハッシュを生成できるソースが複数ある可能性があります。

解決策 2

これが機能しないのには十分な技術的な理由があり、SHA または MD5 ハッシュを「復号化」できないのと同じ理由です。 MD5 と SHA の復号化: なぜそれができないのか[^]

2600 バイトでは、20,800 通りの異なる組み合わせしか許可されません。多くの人は携帯電話でそれより多くの自撮り写真を撮っています。 英語だけで書かれた小説は約 500 万種類あります。

コメント

タイトルとURLをコピーしました