問題タブ [crc32]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - Ruby on railsで32ビットCRCを計算するには?
Ruby on railsで「入力フィールド値」の32ビットCRC値を計算したいのですが、サンプルコードが必要です、誰か助けてください。
gzip - gzip -lv に一致するチェックサムを与える外部ツールはありますか?
gzip は、-l および -v オプションを指定すると、次のように各ファイルのチェックサムを提供します。
同じチェックサムを取得できる外部ツールはありますか?
md5sum
、同様の役割cksum
をsum
果たしますが、一致するコードを与えません (3915528286 の 16 進数は e962385e です)。
アプリケーションの詳細:
多くの大きなファイルを含むファイルシステムがあり、新しいファイルが継続的にコピーされます。着信ファイルの一部は既存のファイルと一致します。この場合、ディスク容量を節約するために、既存のファイルを単純にハードリンクしたいと考えています。解凍されたファイルの場合、md5sum はこの比較を迅速かつ効率的に行うのに役立ちます。一方、gzip されたファイルは、同じデータに対して異なる md5sum を持つことがよくあります (タイムスタンプまたは所有者が原因で、このアプリケーションでは関係ありません)。gzip は内部データのチェックサムを提供するので、2 つの gzip ファイルについて、チェックサムとサイズのリストを単純に比較できます。
また、gzip ファイルと「通常の」ファイルの比較もサポートしたいと考えています。その場合、gzip から外部で同じチェックサムを生成するユーティリティが必要です。簡単な解決策は、比較する前に常にプレーン ファイルを gzip することだと思いますが、これは回避したいオーバーヘッドです。現在、システムは CPU 時間によってボトルネックになっているからです。
python - Pythonでbz2(bzip2)CRC32を計算/検証する
圧縮されたbzip2アーカイブのCRC32チェックサムを計算/検証しようとしています。
http://en.wikipedia.org/wiki/Bzip2
したがって、CRCチェックサムがbz2ファイルのどこにあるかはわかっていますが、それらを検証するにはどうすればよいでしょうか。binascii.crc32()
両方のCRCを取得するには、どのチャンクが必要ですか?さまざまなチャンクのCRCをバイトごとに計算しようとしましたが、一致するものを取得できませんでした。
ありがとうございました。特にメソッドで何かを見つけるために、bzip2ソースとbz2
Pythonライブラリコードを調べます。decompress()
アップデート1:
私が見る限り、ブロックヘッダーは次のタグで識別されます。ただし、小さなbz2ファイルにはENDMARKファイルが含まれていません。(adwのおかげで、圧縮データはバイトに埋め込まれていないため、ENDMARKのビットシフト値を探す必要があることがわかりました。)
これはbzlib2recover.c
ソースからのものであり、ブロックは常にCRCチェックサムの直前のビット80で開始するようです。これは、CRC計算から除外する必要があります。これは、自身のCRCを同じCRCにすることはできないためです(私のポイントを取得します) 。
これを計算するコードを調べます。
アップデート2:
bzlib2recover.c
CRC計算機能はなく、破損したファイルからCRCをコピーするだけです。ただし、Pythonでブロック計算機能を複製して、bz2
圧縮ファイル内の各ブロックの開始ビットと終了ビットをマークアウトすることができました。compress.c
軌道に戻ると、それはの定義のいくつかを参照していることがわかりましたbzlib_private.h
。
これらの定義はによってもアクセスさbzlib.c
れ、s->blockCRC
で初期化および更新されbzlib.c
、でファイナライズされcompress.c
ます。2000行を超えるCコードがあり、何が入っているのか、何が入っていないのかを調べて理解するのに時間がかかります。C
質問にもタグを追加しています。
ちなみに、bzip2のCソースは次のとおりですhttp://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
アップデート3:
ブロックCRC32bzlib2
は、次のアルゴリズムを使用して計算されていることがわかります。
dataIn
エンコードするデータです。
BZ2_crc32Tableが定義されている場所crctable.c
dataIn = "justatest"
返されるCRCは、その7948C8CB
データでテキストファイルを圧縮しているため、bz2ファイル内のcrc:32チェックサム79 48 c8 cb
は一致します。
結論:
bzlib2 CRC32は(引用符crctable.c
)
comp.compression FAQのセクション51にある、RobWarnockによるコードから漠然と派生しています...
...したがって、私が理解している限り、標準のCRC32チェックサム計算機を使用して事前計算/検証することはできませんが、bz2lib
実装が必要です(の155〜172行目bzlib_private.h
)。
python - Python zlib モジュールでパラメーターを設定する方法
PNG ファイルを作成する Python プログラムを作成したいと考えています。私の大きな問題は、CRC と IDAT チャンク内のデータを生成することです。Python 2.6.4 には zlib モジュールがありますが、追加の設定が必要です。PNG 仕様では、ウィンドウ サイズが 32768 バイトの zlib の deflate メソッドで IDAT データを圧縮する必要がありますが、Python zlib モジュールでこれらのパラメーターを設定する方法が見つかりません。
各チャンクの CRC については、zlib モジュールのドキュメントに CRC 関数が含まれていることが示されています。その CRC 関数をcrc32 (data,-1) として呼び出すと、必要な CRC が生成されると思いますが、必要に応じて、PNG 仕様で指定されている C コードを変換できます。
PNG ファイルの残りの部分とIDAT チャンク用に圧縮されるデータを生成できることに注意してください。最初のフィルタリング ステップを実装した後、IDAT チャンク用の画像データを適切に圧縮する方法がわかりません。
編集:
PyPNG の問題は、tEXt チャンクを書き込まないことです。ちょっと面倒なのは、画像を (R, G, B) データとして操作しなければならないことです。ピクセルのパレット値を直接操作してから、パレット値とカラー データの関連付けを定義したいと思います。また、PyPNG が画像データで 1 ビット、2 ビット、および 4 ビットのパレット値を使用して 1 バイトに複数のピクセルを収めることができる「圧縮」を利用しているかどうかもわかりません。
c# - C#.netでファイルのCRC値を計算するには?
C#.net で 32 ビット アルゴリズムを使用してファイルの CRC 値を計算したい....
java - Java画像転送の問題
私には学校の課題があります。jpg画像を送信し、100バイトのグループに分割し、破損し、CRCチェックを使用してエラーを特定し、最終的に元の形式に戻るまで再送信します。
実質的には準備ができていますが、新しい画像をチェックアウトすると、エラーが表示されます。
誰かが以下の私のコードを見て、問題が何であるか理解できないので、この論理的な間違いを見つけることができれば本当にありがたいです:S
写真やエラーパターンを含む必要なすべてのデータを含むファイルについては、次のリンクからダウンロードできます:http://rapidshare.com/#!download|932tl2|443122762|Data.zip|739
画像ファイルとエラーファイルのコードのパスを変更することを忘れないでください。
}
checksum - 検索を高速化するための優れたチェックサム
文字列のチェックサムインデックスを作成して、アプリケーションの検索を高速化したい。
CRC32で十分ですか?私はセキュリティのためにそれを使用していません。文字列をハッシュ(整数/整数)インデックスとして表す方法と同じです。
python - Python CRC-32 の問題
6 GB の bz2 ファイルの途中からデータを抽出する Python プログラムを作成しています。bzip2 ファイルは、個別に復号化可能なデータ ブロックで構成されているため、必要なのはブロック (マジック ビットで区切られている) を見つけて、そこから一時的な 1 ブロックの bzip2 ファイルをメモリに作成し、最後にそれをbz2.decompress 関数。簡単ですよね?
bzip2形式には、最後にファイルの crc32 チェックサムがあります。問題ありません。binascii.crc32 が役に立ちます。ちょっと待って。チェックサムを計算するデータは必ずしもバイト境界で終わるとは限らず、crc32 関数は整数バイトで動作します。
私の計画: binascii.crc32 関数を最後のバイト以外のすべてに使用し、独自の関数を使用して、計算された crc を最後の 1 ~ 7 ビットで更新します。しかし、何時間にもわたるコーディングとテストの結果、私は戸惑いました。私の困惑は、次の質問に要約できます。ウィキペディアの記事によると、そうすべきではありませんか?
0b00000000 で開始し、32 個の 0 でパディングしてから、最初の 8 ビットに 1 が残らなくなるまで、0x04C11DB7 で多項式除算を行います。最後の 32 ビットはチェックサムです。なぜそれがすべてゼロにならないのでしょうか?
私は答えを求めて Google を検索し、いくつかの CRC-32 実装のコードを調べましたが、その理由についての手がかりは見つかりませんでした。
c# - メモリにロードされた実行可能ファイルの CRC チェックを行う方法は?
保護上の理由から、現在の実行可能ファイルのメモリ イメージをチェックするスレッドを実行したいと考えています。現在のメモリ実行可能ファイル (WinAPI または .NET の方法) で CRC を実行する方法はありますか? 私のアプリは .NET で書かれています。
security - CRCとハッシュ方式(MD5、SHA1)の違い
CRC とハッシュの両方の方法を使用して、元のデータの整合性を検証できます。現在、ほとんどのシステムがハッシュ方式を使用しているのはなぜですか?