問題タブ [message-digest]
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.
java - javaと比較してcで異なるopensslダイジェスト
以下は、DigitalSigning Handler の一部であるコードです。
SOAP 呼び出しのロギングを有効にし、SHA-256 形式のダイジェストが計算されている文字列を抽出しました。同じ文字列を使用して、c でダイジェストを計算しました。以下は、それを計算する C++ のコードです。両方の値が異なります。
この点に関するヘルプは役に立ちます。ありがとう
java - MessageDigest.reset() を使用する場合
Java でのハッシュ生成に関する OWASP の推奨事項にやみくもに従ってきました (こちらを参照)。具体的には、 の目的と効果がよくわからないMessageDigest.reset()
ため、いつ、どのように使用すればよいかわかりません。
update()
完全に署名する必要があるさまざまな値を使用してダイジェストを数回 ing することにより、salt とペイロードを「ロード」しています。reset()
事前に消化する必要がありますか?それともその後?- ダイジェストが
reset()
ループ内にあるのはなぜですか (例を参照)。
これが私のコードです:
私が観察しているのは、serialNumber
が変わっても署名が同じままであることです。「reset()」呼び出しを省略した場合、sig は変更されます...
android - MD5 は、Android の MessageDigest で使用できることが保証されていますか?
MD5 ダイジェスト アルゴリズムがすべての Android デバイスで利用可能であることが保証されているかどうかを知りたいのですが、MessageDigest.getInstance("MD5")
スローされる可能性があるチェック済み例外を率直に無視します。
java - MD5メッセージダイジェストJava
文字列リストからMD5メッセージダイジェストに2つの文字列を変換しようとしています。
私の文字列リストは「usernamepassword」と呼ばれます。
私の質問は-
A:それは正しいやり方ですか?B:別のクラスで個々のMD5ハッシュを使用できるようにするには、どうすればそれを返すことができますか?
java - MessageDigest.update(byte[]) は何をしますか?
これは正確に何をしますか?調べてみましたが、何も見つかりませんでした。
byte[]
質問の理由は、ハッシュされる値にSALT を組み込みたいからです。したがって、次のようにする必要があります(疑似コード):
SALT
これは と の両方をvalue
最終ダイジェストに追加しますか、それとも両方の変数を 1 つに結合してから 1update
回結合する必要がありますか?
どのドキュメントにもこれに対する答えが見つかりませんでした。説明をいただければ幸いです。
ありがとう、乾杯。
java - DigestInputStream -> コンシューマー部分がボトルネックの場合、スローダウンせずにハッシュを計算します
ファイルを S3 などのサービスに転送する必要があるアプリケーションがあります。
InputStream
その着信ファイル (必ずしも a である必要はありません)FileInputStream
があり、これInputStream
を で表されるマルチパート リクエスト ボディOutputStream
に書き込みます。次に、ファイルのハッシュを最後に (これもリクエスト ボディを介して) 書き込む必要があります。
のおかげでDigestInputStream
、ハッシュをライブで計算できるので、ファイル本体が に送信されたOutputStream
後、ハッシュが利用可能になり、マルチパート リクエストに追加することもできます。
この関連する質問を確認できます: 最も安価なハッシュ アルゴリズムとは何ですか?
特に私自身のベンチマークの回答: https://stackoverflow.com/a/19160508/82609
したがって、私のコンピューターはMessageDigest
、MD5 で 500MB/秒、SHA-512 で 200MB/秒近くのスループットでハッシュできるようです。
リクエスト本文を書き込む接続のスループットは 100MB/s です。より高いスループットで OutputStream に書き込むと、OutputStream がブロックされ始めます (これは、メモリ フットプリントを低く保ち、アプリケーションの一部にバイトを蓄積させたくないため、意図的に行われます)。
テストを行ったところ、アルゴリズムがアプリケーションのパフォーマンスに与える影響がはっきりとわかりました。
50MB (合計 1Gb) のファイルを 20 個アップロードしようとしました。
- MD5 では、約 16 秒かかります
- SHA-512 の場合、約 22 秒かかります
単一のアップロードを実行すると、同じ順序で速度が低下することもわかります。
したがって、最終的には、ハッシュの計算と接続への書き込みの並列化はありません。これらのステップは順番に実行されます。
- ストリームからバイトを要求する
- 要求されたバイトのハッシュ
- バイトの送信
ハッシュのスループットは接続スループットよりも大きいため、その速度低下を回避する簡単な方法はありますか? 追加のスレッドが必要ですか?
前のチャンクが接続に書き込まれている間に、データの次のチャンクを事前に計算してハッシュできると思いますか?
これは時期尚早の最適化ではありません。大量のドキュメントをアップロードする必要があり、実行時間はビジネスにとって妥当です。