問題タブ [blowfish]
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.
security - checkpwに関するjBCryptの深刻な問題(すべきでないときにtrueを返しますか?)
編集:わかりました、私はここで答えをいくらか見つけましたBCryptは長いと言います、同様のパスワードは同等です-私、宝石、または暗号化の分野に問題がありますか?
しかし、新しい質問ですが、パスワードをn文字より短くする必要があると言って、ますます複雑になるパスワードを選択するようにユーザーを教育しようとしている世界で、ユーザーのパスワードの長さを制限する必要がある場合、ハッシュにbCryptを使用することをどのように推奨できますか?金曜日のthedailywtf.comのスクリーンショットにたどり着く方法のようです:)
以下の元の質問:
私はアプリケーションの古いログインページをリファクタリングしていて、JAVA実装jBCrypt(http://www.mindrot.org/projects/jBCrypt/)を使用してbCryptに旋回を与えることにし、1つの主要なショーストッパーに遭遇しました。
問題は、非常に長いシードを使用すると常にtrueを返すように見えるcheckpwメソッドにあります。ユーザーのパスワードを{InternalSalt}{username}{password}でソルトし、それをbCryptでハッシュします。
だから私は次のコードを持っています(checkpwを分離するために可能な限りそれを取り除いた)。
}
これは、当然のことながら、「一致します」と出力します。
私が抱えている問題は、checkpwに渡すパスワードにsayaaaを追加して作成することです。
BCrypt.checkpw( "jw〜ct / f61y1m7q458GiLVQpiqDK | 8kG = d368Id:D @ $ ^ _ 80I {qrn1HM6423 {FtestAccountO1nu3jKNaaa"、pw_hash)
それでもtrueを返します!正確には私が期待していたものではありません。ドキュメントにパスワードの長さの制限はありませんが、小さいパスワードシードで再現することはできません。また、文字列の末尾以外を変更すると、期待どおりに機能し、falseが返されるように見えます。
私は何か大きなものを逃しましたか?いくつかの調査を行っている間、多くの投稿でBCryptが推奨されているのを見てきたので、これらのフォーラムでjBcryptを使用しているのは私だけではないことを知っています。
編集:Windows 7 64ビット-Java(TM)SEランタイム環境(ビルド1.6.0_24-b07)
java - ユーザーがblowfish暗号化用のキーを入力できるようにする
私はblowfishを使用してメッセージを暗号化するsqliteデータベースを書いています。ただし、これを効果的に使用するには、プログラムの起動時にユーザーがデータベースのキーを入力できる必要があります。問題は、セキュリティのためにランダムに生成されたキーを使用しているという事実ですが、これにより、ユーザーがキーを入力できなくなっているようです。たとえば、ヌル文字の入力を強制せずに、ユーザーにキーを入力させる方法を知っている人はいますか。
c++ - シュナイアーのフグ
SchneierのBlowfishコード( http://www.schneier.com/code/bfsh-sch.zip)の使用例、つまり、CまたはC ++での特定のキーを使用した文字列の暗号化と復号化を教えてもらえますか?
前もって感謝します。
編集:これは宿題ではありません。
encryption - Blowfishブロックサイズ64ビット-入力が64ビットの倍数でない場合の対処方法
Blowfishを使用して長さが不明な文字列を暗号化するアプリケーションを作成しています。入力は任意の長さにすることができるため、必ずしも8バイトの倍数である必要はありません。
この状況に対処するための標準的な方法は何ですか?おそらく、文字列の最後に0を入力しますか?おそらくもっとエレガントな方法がありますか?
前もって感謝します。
c++ - キーの最初の文字のみを使用したフグの暗号化/復号化
Bruce Schneier のソース コードを使用して、Blowfish を使用して一部のデータを暗号化しています。8バイトキーで暗号化すると、その8バイトキーの最初の文字で復号化できることに気付いた以外は、すべてうまくいくようです(たとえば、キー「abcdefgh」で暗号化し、「a」で復号化できます)。
ここに私のコードからの抜粋があります:
フグを初期化します。
次に、入力を 8 バイト ブロックの 2 つのユニオンに格納します。それぞれに 4 文字と unsigned long があります。
次に、暗号化します。
xl.l と xr.l はそれぞれ、私の 2 つの共用体 xl と xr の unsigned long です。
復号化するには:
また、キーがランダムなものである場合は復号化されず、正しいキーまたはその最初のバイトである場合にのみ復号化されないことに注意してください。
何が起こっている?!
ご協力いただきありがとうございます。
c# - Blowfishの一方向ハッシュのためにC#でBouncyCastleを使用するには?
Blowfish と C# について多くの質問が寄せられましたが、通常の答えはBouncyCastleです。ただし、プロジェクトには基本的にドキュメントがなく、ディレクトリ構造を回避して、例として単体テストを見つけることさえできません。つまり、Blowfish は Asn1、Bcpg、Crypto(一般的には?)、EC、Ocsp、Pkcs などとして知られているのでしょうか? ソース コード内のすべての頭字語が何を意味するのかを知るというドメイン知識が不足しています。
Blowfish に C# BouncyCastle API を使用して成功した記事やブログ、または何か役立つ記事やブログはありますか? 私の主な必要性は、パスワードのハッシュに Blowfish を使用することです。
c# - BouncyCastle BlowFish 暗号の問題
ここに私のBlowFishCryptoクラスがあります
他のクラスでテストしようとしたので、このようにしました
outputhex func は結果を 16 進数として出力します
結果は次のとおりです。
それは機能していませんが、なぜですか?
c# - BlowFish/DH に使用できる最適なライブラリは何ですか?
BlowFish/DH に使用できる最適なライブラリは何ですか。BouncyCastle を使用していたのですが、目的の機能がないように見えるため、使用できる別のライブラリがあるかどうか疑問に思っていたので、CFB/ DH? ありがとう
そして、ここに私のBouncyCastleクラスがあります:
php - MCRYPT_BLOWFISH で CRYPT_BLOWFISH を模倣する
私の質問は、フグに関して、crypt から取得するのと同じ結果を mcrypt から取得するにはどうすればよいですか?
パスワードのハッシュと検証に phpass フレームワークを使用したいと考えています。フグが に含まれているため、PHP 5.3 を使用している限り、これは非常にうまく機能しますcrypt()
。私のホストは mcrypt ライブラリで PHP 5.2.x を実行しています。
ドキュメントを調べてクリプトでフグについてグーグルすると、結果は'$a2$'
、2文字の反復値、'$'
ソルト(パディングまたは22文字にカット)、ハッシュを表す32 base64文字列のようです。
MCRYPT_MODE_modenames
私の問題は、私にとって意味のある の説明が見つからないことです。そして、必要な反復回数をどのようにフィードmcrypt()
しますか? それとも、クロストランスレートしない異なる形式のフグを使用する 2 つの関数ですか?
perl - 塩漬けのヘッダーを使用して Blowfish 暗号文を復号化するにはどうすればよいですか?
Perl のCrypt::CBCモジュールを使用して暗号化された暗号文があり、それを別の場所で解読したいと考えています。
Crypt::CBC
暗号文は、コンストラクターの「単純な」バージョンを使用して生成されました。つまり、次のとおりです。
MANページを読むと、この構築方法は、単純な文字列キーとランダムソルトを取得して、暗号化に使用するIVおよびリテラルキーを生成し、ソルトを使用してヘッダーを埋め込みます.
"salt" -- パスフレーズを 8 バイトのランダム値と組み合わせて、提供されたパスフレーズからブロック暗号キーと IV の両方を生成します。ソルトはデータ ストリームの先頭に追加され、正しいパスフレーズが与えられた場合、復号化によってキーと IV の両方が再生成されます。この方法は、OpenSSL の現在のバージョンと互換性があります。
ここで、暗号文、リテラル キー、および IV を指定して、CBC 復号化のみをサポートする別のプラットフォームで暗号文を復号化する必要があります。リテラル キー、IV & ソルトを生成するために、Crypt::CBC を使用して次のような値を生成しました。
ここでの復号化は正しいですが、生成されたリテラル キー & IV を使用して暗号を復号化できませんでした。これはゴミを生成します:
リテラルキーを提供してソルトヘッダーを使用することはできないため、次の動きについて迷っています。
このテキストを解読するにはどうすればよいですか?
編集: ターゲット システムは Perl を実行していませんが、上記の $rubbish と同じ値を生成できたので、同じアルゴリズム (CBC、Blowfish) を使用して解読していると確信しています。