本からSHA-256を読みましたが、その本は何のために説明されていませんか?この本は、Javaでそれを作成する方法を説明しました。しかし、私はInteger.toString((byteData[i] & 0xff) + 0x100, 16).substring(1))
が何であるか理解できませんでした。誰かが私にそれを詳細に説明することはできますか?SHA-256とは何ですか?そしてそれをJavaでどのように作成するのですか?
答えて
Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1))
一ワシントン州バイト値を16進数の2進数の文字列に変換します。 String's Javadoc pageを見ると役立ちます。
0x100
とsubstring(1)
の組み合わせでは、16進数の16進数(つまり16進数の0〜F)のバイト値も2文字で表示されます(<)。ところで
:
String.format("%02x",byteData[i])
は正確に同じことを、特にCのprintf形式のフォーマット文字列に使用されている人々によって、より読みやすいと考えられるかもしれません。
最後に、なぜ(byteData[i] & 0xff)
ですか? Javaは 符号拡張を使用して、intへの拡大変換を行いますので、
それは動作しますので、代わりに負のバイトのあなたは、負の int型を持っています。詳しい説明はhereを参照してください。 0xffでマスキングすると、下位8ビットのみが残るため、 は再び正の数になります。
バイトを16進数に変換する例を教えてください。 –
これはまさに「Integer.toString」と「String.format」の両方の提案がしていることなので、私はあなたの質問を理解していませんか? – fvu
これを16進数に変換する方法を理解しましたが、もう1つの質問があります。 &0xffは重要ですか?バイトは常に8ビットに等しくありませんか?それでなぜ8ビットであることを確認する必要がありますか?ありがとう! –
SHA-256ハッシュアルゴリズムと呼ばれ、その目的は簡単である:これは、任意のデータを受け取り、それを表現するバイトのユニークなシリーズを生成します。このプロセスを元に戻す方法はなく、一意ではないSHA-256ハッシュの既知のインスタンスはありません。
問題のコード行の目的は、最終的なSHA-256出力の1文字を生成することです。 Javaは、生データ(バイト配列)にhasを与え、通常は16進数に変換して文字列として表現します。そのコード行はかなり複雑なので、私はそれの各部分が別々に何をするかについて説明します。
sb.append();
は、入力を受け取り、それをStringBuilderに格納された結果に追加しています。
Integer.toString();
番号を受け取り、
byteData[i] & 0xff
は、ハッシュデータの現在のバイトを選択し、バイト内の各ビットについて(SOの0xFFを使用してビット単位のAND演算を使用して、0xFFの内の対応するビット場合、文字列リテラルとして表しますない出力が0
string.substring(1);
出力文字列が最初の文字の後に開始された場合、出力は、1であり、同じである。
あなたの答えも良いですが、あなたは何が "0x100"なのか説明しませんでした。私はあなたの助けに感謝します。 –
- 1. Symfonyのヘルパーとは何ですか?私たちはどのようにそれらを作成しますか?
- 2. javaでhash sha256を使用してハッシュコードを生成するにはどうすればよいですか?
- 3. RTMFPでWebサービスを作成するには? (そして..それがどのように働くか)
- 4. IORファイルとは何ですか、それは何ですか?どのように機能しますか?
- 5. HttpClientとは何ですか?そしてどうやってそれを手に入れますか?
- 6. iphoneのOpenGLコンテキスト。それは何ですか/それはどのように機能しますか?
- 7. ストロープとは何ですか?それをJQueryでどのように使用するのですか?
- 8. (CHORD)Peer-2-Peerどのように動作するのですか/それは何ですか?
- 9. PopupPanelウィジェットとその子ウィジェットでターゲットを作成するにはどうすればよいですか?
- 10. ethloaderとは何ですか?そしてソースをダウンロードするにはどうすればいいですか?
- 11. ハートビートデザインパターンとは何ですか?それはASP.NETセッションにどのように関連していますか?
- 12. 'plexus'とは何ですか?それはどのようにmavenに関係していますか?
- 13. PyMySQLとは何ですか?そしてPythonはMySQLdbとどう違うのですか?それはDjangoの展開に影響を与えますか?
- 14. 「データビズ」は何ですか?私はそれを使用しようとすると、
- 15. TreeMapそれはどのようにソートするのですか
- 16. NSConcreteDataとは何ですか、そしてそれはどこに定義されていますか?
- 17. どのようにIEのクエリシステムを作成し、それに応じて応答するのですか?
- 18. Ext.namespaceとは何ですか?私たちはそれらをどのように使うべきですか?
- 19. FolderBrowserDialogをフィルタリングするにはどうすればよいですか、それとも何ができますか?
- 20. 弱いグローバル参照は何ですか?それはグローバル参照とどのように違うのですか?
- 21. PreparedStatementキャッシング - それはどういう意味ですか(どのように動作するのですか)
- 22. 最適化! - それは何ですか?どうしたの?
- 23. Androidでサービスを作成してそれを消費するにはどうすればいいですか?
- 24. スレッドステータスモニタ。これをどのようにデバッグするのですか?それは何の原因ですか?
- 25. Rails 3:users_controllerを作成する、それはどこですか?
- 26. Javaクラッシュの原因は何ですか?そしてそのような事故を防ぐ方法は?
- 27. Front Controllerとは何ですか?そして、それはPHPでどのように実装されていますか?
- 28. Ext.net PageProxy:それは何で、どのように機能しますか?
- 29. Googleマップはどのように地図をレンダリングするのですか?それはJavaアプレットのフラッシュですか?
- 30. Javaでscala.collection.immutable.vectorを作成し、それ
https://en.wikipedia.org/wiki/Cryptographic_hash_function#Applications –
SHA-256は、数値を16進数に変換することには関係しません。 –
SHA 256はハッシュアルゴリズムです。しかし、真剣に:もしあなたがそれが何であるか分からなければ、それを忘れる。通常、あるレベルの「セキュリティ」を達成するには、ハッシングと暗号化が必要です。しかし、それは初心者のためのトピックではありません。言い換えれば、そのような話題に関するこのような質問をどうにかすると、他の話題を調べるほうがいいということを意味します。 – GhostCat