問題タブ [pbkdf2]
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.
passwords - Java で HMAC を使用する PBKDF2
プレーンテキスト ファイルに保存されたユーザー パスワードの機密性と整合性を確保する必要がある Java プロジェクトに取り組んでいます。
そのために、パスワードのハッシュのみをファイルに書き込みます。より具体的には、レインボー テーブルとルックアップ テーブルの使用を避けるために、パスワードのハッシュとランダム ソルト、およびランダム ソルト自体を作成することを意図しています。また、PBKDF2 でキーストレッチングを使用して、ハッシュの計算を計算コストの高いものにしたいと考えています。最後に、保護の最終層として鍵付きハッシュ アルゴリズム HMAC を使用したいと思います。
私は自分の考えを Java コードに実装しようとしていますが、上に示した操作の例をいくつか見つけました。
私が本当に理解できないのは、関数への入力ではないように見えるため、HMAC アルゴリズムで使用されるキーとして秘密キーを入力する方法です。Java のドキュメントに目を通しましたが、質問に対する解決策が見つかりません。
この時点で、暗号化メカニズムのさまざまな部分がどのように機能するかを正しく理解しているかどうかはよくわかりません。そのため、このトピックに関するヘルプを受け入れます.
java - PBEKeySpec のソルト、反復回数、キー長のデフォルト値
http://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/PBEKeySpec.html
そのため、ソルト、反復回数、およびキーの長さはオプションのパラメーターです。指定されていない場合のデフォルトは何ですか?
鍵の長さが固定されているアルゴリズムの場合、鍵の長さは簡単に把握できますが、AES などのアルゴリズムでは複数の鍵の長さを持つことができます。
何か案は?
javascript - JavaScriptのRfc2898DeriveBytesに相当しますか?
次のようなコードを使用して、パスワードを暗号化し、後で復号化できる C# コードを見てきました。
http://wp7-travel.googlecode.com/svn/trunk/SilverlightPhoneDatabase/Cryptography.cs
私はセキュリティの専門家ではなく、暗号アルゴリズムの経験が限られています。その種のコードで暗号化された暗号化されたパスワードがあり、node.js プログラム (Javascript) で復号化されたパスワードにアクセスしたいと考えています。
モジュールがあるようですcrypto-js
がpbkdf2.js
、パスワードを暗号化する方法しか知りません。
http://anandam.name/pbkdf2/を見たことがありますが、これも暗号化のみのようです。復号化なし。
パスワードを暗号化するために使用された既知のソルトと反復が与えられた場合、プレーンな Javascript を使用して、できればcrypto-js
.
hash - Crypto - Express.js は PBKDF2 HMAC-SHA1 で十分ですか?
Express.js フレームワークと暗号を使用して pbkdf2 でパスワードをハッシュする デフォルトのアルゴリズムは HMAC-SHA1 であると読みましたが、他のファミリまたは SHA のいずれかにアップグレードされていない理由がわかりません。
提供する keylen は、必要な SHA のバリエーションですか? SHA-256,512など?
また、HMAC はどのように出力を変更しますか?
最後に、SHA1 が壊れたときに十分な強度がありますか?
私が物事を混同していたらごめんなさい。
c++ - Crypto++ を使用した一定時間のパスワード ダイジェスト比較
cryptopp を使用して pbkdf2 メソッドでパスワードをハッシュするプログラムを書いています。
パスワードの検証に問題があります。「長さ一定」時間で出力を比較しようとしましたが、常に失敗し、false を返します。
pbkdf2 パスワードを検証する正しい方法でさえ、「slow equals」を使用していますか? 私はこれについて少し混乱しています。
c# - Rfc2898DeriveBytes - パスワードの長さ
関連する答えを長い間見つけようとしていますが、まだ確信が持てません。
私がしようとしているのは、RijndaelManaged を使用して暗号化することです。キーを作成するために、パスワード、salt、反復を Rfc2898DeriveBytes に渡します。
ユーザーが入力したパスワードがRfc2898DeriveBytesに渡す前に特定の長さを下回っている場合、定数を追加することを考えていました。
これまでのところ、定数を追加してもセキュリティには何のメリットもありません。攻撃者が暗号化されたデータとソルトを含むデータベースへのアクセスを取得するとします。結局、彼はそれが一定であることに気付くでしょう。
それとも、心配することなく、任意の長さのパスワードを Rfc2898DeriveBytes に渡すことは「本当に非常に」安全ですか?
より短いまたはより長いパスワードを渡すと、どちらがより適切で最も推奨されるかという点で、キー導出プロセスに影響しますか?
これまでのところ、ランダムなソルトとより多くの反復が重要であることを知っています。
以下はコードです。パスワードへの定数の追加を削除するか、保持する必要がありますか?
(注: ユーザーに対するパスワードの長さ制限は GUI では適用されません。ユーザーは 1 文字または 10 文字以上を渡すことができます)
肯定的または否定的なコメントと応答を歓迎します。