問題タブ [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.
php - Javascriptcrc32関数とPHPcrc32がUTF8に一致しません
私はPHPからcrc32関数を取得して、javascriptによって生成された結果と一致させようとしています。私はネット上で見つけた4つの異なるjavascriptcrc32ライブラリ(1、2、3、4 )を調べましたが、それらはすべてASCIIで正常に機能しますが、utf8文字をスローすると、 4つのjsライブラリすべてが同じ間違った出力をします答え。
この古いstackoverflowの質問は最も近い答えのようですが、それでも私のテストでは機能しません。
例えば:
php:crc32('tést') = 727386373
javascript:crc32.genBytes('tést') = 3109344618
便宜上、これが最もコンパクトなバージョンです。
また、MySQLのcrc32はphpと一致するため、javascriptが間違っていることは間違いありません。javascriptでutf8文字列に対して適切なcrc32を実行する方法について誰かが手がかりを持っていますか?
c - 32ビットチェックサムアルゴリズムはCRC32よりも高品質ですか?
次のいずれかの32ビットチェックサムアルゴリズムはありますか?
- 入力データサイズが1KB未満の場合のハッシュ衝突確率が小さい?
- 衝突はより均一な分布でヒットします。
これらはCRC32に関連しています。32ビットのストレージスペースの制限のため、私は実際には最初のプロパティを当てにしていません。しかし、2番目の...改善がある可能性があるようです。
何か案は ?ありがとう。(具体的な実装が必要です。Cの方が優れていますが、C ++ / C#などの最初の実装も問題ありません)。
php - ハッシュ関数とパスワードの保護
パスワードのハッシュなどのさまざまな形式について多くのことを考えてきました。はい、私は塩漬けについて知っていて、おそらくそれをハッシュに追加しますが、これは塩漬けなしです。私はおそらく動的塩漬け技術を使用するでしょう。
それ以外に、以下に示すことを行うのは論理的でさえあるのだろうかと思っていました。
エコーは次を出力します。
1180170431
464e07afc9e46359fb480839150595c5
d27937f914ebe99ee315f04449678eccfb658191
そのエコー出力:
5820170431464e07afc9e46359fb480839150595c51180170431d27937f914ebe99ee315f04449678eccfb658191
では、このようなパスワードをハッシュするのはやり過ぎだと思いますか?ソルティングを使用したハッシュの1つの形式に固執する必要がありますか?本当に当たり前のように思えるので、私がこのようなことを最初に考えることはできないことを私は知っています。
また、このフォームで衝突衝突などに遭遇するのはどれほど難しいと思いますか?
ご回答ありがとうございます!:)
java - java.util.zip.CRC32でのCRC-32の実装
Java CRC-32クラスで使用されているCRC-32アルゴリズムはどれですか?javadocには詳細が記載されていません。使用されるポリノメールと計算の初期値は何ですか?
c# - 文字列のC#で最速の冗長性チェックサムは何ですか?
20〜30文字の文字列があり、大文字と小文字が区別される文字と数字が含まれています
2文字のチェックサムを生成する必要があります(大文字と小文字が区別される場合も同様)
それらを組み合わせて一意のIDを作成します
検証目的でチェックサムを計算するためのC#での最速の方法は何ですか?
crc - 同じ幅のSHA-512と複合CRC-32の精度の比較
長さ約512KBのデータをチェックするには、高精度のチェックサムが必要です。私は以前にいくつかの異なるチェックサムを知っており、使用したことがありますが、これまでこれほど精度を気にする必要はなかったので、これを見つけたいと思っています。
多項式0x1EDC6F41を使用するCRC-32の複合(最大512ビットの長さ)がある場合、SHA-512(SHA2)ハッシュよりも多かれ少なかれ正確ですか?
crc32 - ファイルの先頭とファイル全体のcrc32がわかっている場合、ファイルの末尾のcrc32を取得することはできますか?
f = (p1, p2) という部分に分割されたファイルがあるとします。crc32(p1) と crc32(f) を計算しました。crc32(p2)を計算する簡単な方法はありますか?
私は主に複雑さ O(1) のソリューションに興味がありますが、O(n) で十分です。ここで、n = length(p1) (length(p1) が length(p2) よりもはるかに小さいと仮定します)。
主なアイデアは、ファイルの 2 番目の部分を繰り返し処理しないことです。
c# - CRC32 の反転
CRC32 を逆にするコードを見つけましたが、それがどのように機能するのかわかりません。プログラミングが得意ではないので、始めたばかりです。古いファイルと新しいファイルの 2 つのファイルを比較したいだけです。新しい修正では、CRC32 がファイルの末尾に 4 バイトを追加するため、2 つのファイルの CRC32 は同じになります。コードは次のとおりです。C# です。
python - イーサネット CRC32 計算 - ソフトウェア vs アルゴリズムの結果
イーサネット パケットのフレーム チェック シーケンス (FCS) をバイトごとに計算しようとしています。多項式は0x104C11DB7
です。ここで見られる XOR-SHIFT アルゴリズムに従いましたhttp://en.wikipedia.org/wiki/Cyclic_redundancy_checkまたはここhttp://www.woodmann.com/fravia/crctut1.htm
CRC を持つと想定される情報が 1 バイトだけであると仮定します。0x03 としましょう。
step: 右に 32 ビットでパディング
0x0300000000
左側の多項式とデータをゼロではない最初のビットに合わせ、それらを xor します
0x300000000 xor 0x209823B6E = 0x109823b6e
残りの位置合わせと xor を再度実行します
0x109823b6e xor 0x104C11DB7 = 0x0d4326d9
もうビットが残っていないので、0x03 の CRC32 は0x0d4326d9
残念ながら、すべてのソフトウェア実装は私が間違っていると言っていますが、何が間違っていたのでしょうか?
Pythonは私に教えてくれます:
http://www.lammertbies.nl/comm/info/crc-calculation.html#intrのオンライン ツールでも同じ結果が得られます。私の手計算と上記のソフトウェアが使用するアルゴリズムの違いは何ですか?
アップデート:
スタック オーバーフローに関する同様の質問がすでにあったことが判明しました。
あなたはここで答えを見つけますPython CRC-32 woes
これはあまり直感的ではありませんが。イーサネット フレームの処理方法についてより正式な説明が必要な場合は、イーサネット標準ドキュメント 802.3パート 3 - 3.2.9 章 フレーム チェック シーケンス フィールドを参照してください。
上記の例を続けましょう:
メッセージのビット順を逆にします。これは、それらが少しずつ受信機に入る方法を表しています。
0x03
したがって0xC0
メッセージの最初の 32 ビットを補完します。1 バイトを 32 ビットで再度パディングすることに注意してください。
0xC000000000 xor 0xFFFFFFFF = 0x3FFFFFFF00
上記の Xor と shift メソッドをもう一度完了します。約6ステップ後、次のようになります。
0x13822f2d
次に、上記のビット シーケンスが補完されます。
0x13822f2d xor 0xFFFFFFFF = 0xec7dd0d2
ステップ 1 でイーサネット ワイヤ上の表現を取得するためにビットの順序を逆にしたことを思い出してください。ここで、このステップを逆にする必要があり、最終的にクエストを完了します。
0x4b0bbe37
このやり方を思いついた人は誰でも...
多くの場合、受け取ったメッセージが正しいかどうかを実際に知りたいと思うでしょう。これを実現するには、FCS を含む受信メッセージを取得し、上記と同じ手順 1 から 5 を実行します。結果は、彼らが残留物と呼ぶものになるはずです。これは、特定の多項式の定数です。この場合は です0xC704DD7B
。
mcdowellaが言及しているように、使用しているアプリケーションに応じて、正しくなるまでビットをいじる必要があります。
c# - CRC32 リターン int32
crc32 を計算して int32 を返すコードを探しましたが、uint、hex、または string を返す func しか見つかりませんでした。crc32 を int に変換しようとすると、大きすぎて int になりませんでした。int32を返すcrc32の計算方法を知っていますか??
または、このリンクのコードを変更できますか - コードは hex ではなく int32 を返しますか?? http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net
ありがとう、チャニ