問題タブ [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.
hash - 2つのハッシュされたパスワードが同じであることを確認する方法は?
サーバーに送信する前にMD5を使用してログインの詳細をハッシュするプログラムを作成していますが、データベースから取得したblowfish(jBCrypt)ハッシュパスワードと比較する必要があります。
jBCryptは以下を使用します:
問題は、テストする候補のパスワードがないことです。ログイン情報の安全な送信とデータベースへのこれらの詳細の安全な保存の両方を行うにはどうすればよいですか。これに取り組むための最良の方法は何ですか?
ユーザー名、タイムスタンプ、ランダムバイト、およびパスワードを使用して、md5ダイジェスト値を作成します。
ありがとう、ウラジミール
encryption - ColdFusion での暗号化の問題
暗号化された (短い) 情報を Cookie に保存しようとしています。短い文字列 (約 64 文字) を生成し、generateSecretKey() を使用してキーを生成し、AES または Blowfish 暗号化を試みています。
encode() および decode() 関数のパラメータを使用して、デフォルトの UUEncoding、Base64、および Hex を試しました。
AESを使用すると、エラーが発生します
入力文字列の暗号化または復号化中にエラーが発生しました: com.rsa.jsafe.crypto.dr: パディング解除を実行できませんでした: パッド バイトが無効です..
Blowfish では、エラーが発生します
入力文字列の暗号化または復号化中にエラーが発生しました: 最終ブロックが適切に埋め込まれていません。
私は何を間違っていますか?
c# - C# フグの暗号化/復号化
テキストを暗号化/復号化できるフグ ライブラリへのリンクを持っている人はいますか?
Windows 用の .dll をいくつか見つけ、pinvoke を使用してテキストを暗号化/復号化しましたが、これらの dll は Linux (mono) では機能しません。ライブラリが Windows と Linux の両方で動作することが望ましい
ありがとう。
php - NSIS と PHP 間のフグ暗号化メッセージ
私が取り組んでいるプロジェクトでは、NSIS と PHP の間で互換性のある方法で Blowfish を使用して文字列を暗号化および復号化する必要があります。
現時点では、NSIS 用のBlowfish++ プラグインmcrypt
と PHP のライブラリを使用しています。問題は、両方で同じ出力を生成できないことです。
NSIS Blowfish++ プラグインから始めましょう。基本的に API は次のとおりです。
それが CBC、ECB、CFB などであるかどうかについての言及はありません。私は、ほとんど文書化されていないソースを読んでもわかるほど Blowfish に精通していません。ECB は IV を必要としないとPHPmcrypt
のドキュメントに書かれているので、ECB だと思います。
また、ソース コードを読んで、Blowfish++ プラグインが 2 番目の引数を Base64 でデコードして暗号化することも知りました (理由はわかりません)。また、Base64 でエンコードされた文字列も返します。
PHP 側では、基本的に次のコードを使用して暗号化しています。
ただし、これらすべてを実行すると、それぞれから次の出力が得られます。
私は何を間違っていますか?NSIS プラグインは ECB を使用していませんか? そうでない場合、それは IV に何を使用していますか?
security - 対称鍵から非対称鍵へのハンドオフ
私は暗号化の専門家ではありません。実際に使用した経験はほとんどありません。いずれにせよ、私のアプリケーションの 1 つが暗号化をセットアップすることを要求する時が来ました。プログラムは、多くの損害を引き起こす可能性のある非常に重要なものを管理しないことに注意してください.
とにかく、私が使用しているこのスキームが一般的であるかどうか、および欠陥があるかどうかを確認しようとしていました(完全に愚かで恐ろしく欠陥のある設計がある可能性があるため、私は尋ねています)。
わかりました、クライアント -> サーバー通信があります。クライアントは、2048 ビットの RSA キーの公開部分にハード コードできます。クライアントが安全な接続を開始したい場合、クライアントは自分のユーザー名、パスワードの md5 ハッシュ、およびランダムな UUID のハッシュを送信します。これらはすべてサーバーの公開鍵に対して暗号化されています。サーバーは情報を受け取り、秘密鍵を使用して復号化します。データベースをチェックして、彼のログイン + パスが機能するかどうかを確認し、機能する場合は、DB の「セッション」テーブルに新しいエントリを作成します。これには、SessionID、UID (ユーザー ID)、および UUID ハッシュが含まれます。対応するセッション ID の UUID をキーフレーズとして使用すると、サーバーは Blowfish の暗号化された単語「Success!」を含むメッセージを返信します。+ ランダムな UUID (このメッセージはデジタル署名されているため、サーバーから送信されたかどうかを判断できます)。その時点から、クライアントがサーバーに情報を送信すると、平文の sess_id が含まれ、対応するセッション ID のフグの秘密 (DB に暗号化されて保存されます) を暗号化/復号化のキーとして使用して、フグの暗号化メッセージが含まれます。
具体的には、このシステムが「機能するはず」なのか、それとも MITM などの脆弱性が明らかに明白に存在することに誰かが気付いたのか、私は興味があります。
php - PHPのクリプトを使用したフグの塩の正しい形式は何ですか?
のPHPマニュアルエントリでcrypt()
提供されている情報を読みましたが、Blowfishアルゴリズムをトリガーするソルトの形式がまだわかりません。
手動入力によると、16文字の文字列の先頭として「$2$」または「$2a$」を使用する必要があります。ただし、後で示す例では、はるかに長い文字列' $2a$07$usesomesillystringforsalt$
'を使用しています。これは、提供する文字列がモデルに合うようにスライスおよびダイシングされることを示しています。
私が直面している問題は、実際にフグのアルゴvsをトリガーすることですSTD_DES
。例:
そのハッシュは明らかに渦巻きではなく、実際STD_DES
にはソルトの最初の2文字だけがソルトに使用されています。ただし、PHPマニュアルの例では、ソルトは''で始まる$2a$07$
ため、これら3つの文字を同じコードに追加すると、次のようになります。
07$
たとえば、ここで''04$
として示されている文字に多少の差異を与えることができ、15$
両方とも機能しますが、機能01$
し03$
ない(空白の文字列を生成する)、およびなどの値を使用し99$
て、再び85$
元に戻すことができることに気付きました。 STD_DES
。
質問:
$2a$
マニュアルで信じられているように、crypt関数にblowfishメソッドを使用するように指示する''文字列に続くこれらの3文字の重要性は何ですか。
マニュアルによると、' 'はフグの方法を使用する$2a$
ように指示するのに十分なはずです。crypt()
では、次の3文字の意味は何でしょうか。では、これらの3つの文字が非常に重要である場合、ソルトの正しい形式は何ですか?
php - crypt/blowfish が 2 つの異なるソルトで同じハッシュを生成するのはなぜですか?
この質問は、PHP のcrypt()
. この質問では、salt の最初の 7 文字はカウントされないため、salt ' $2a$07$a
' は、salt の 1 文字とメタデータの 7 文字のみであるため、長さ 1 であると言われます。
22 文字を超えるソルト文字列を使用する場合、生成されるハッシュ (つまり、切り捨て) に変更はありません。また、21 文字より短い文字列を使用する場合、ソルトは自動的にパディングされます (' $
' 文字が表示されます)。これはかなり簡単です。ただし、20 文字のソルトと 21 文字のソルトが指定された場合、21 文字の長さのソルトの最後の文字を除いて 2 つが同一である場合、両方のハッシュされた文字列は同一になります。22 文字の長さのソルトは、最後の文字を除いて 21 の長さのソルトと同じですが、ハッシュは再び異なります。
コードの例:
生産します:
どうしてこれなの?
編集:
一部のユーザーは、文字列全体に違いがあることに気付いていますが、これは事実です。ではsalt_20
、オフセット (28, 4) は ですがda$.
、 ではsalt_21
、オフセット (28, 4) はda2.
です。ただし、生成される文字列には、ハッシュ、ソルト、およびソルトを生成するための指示 (つまり$2a$07$
) が含まれることに注意することが重要です。違いが生じる部分は、実際にはまだ塩です。実際のハッシュは変更されていませんUxGYN739wLkV5PGoR1XA4EvNVPjwylG
。
したがって、これは実際には、生成されたハッシュの違いではなく、ハッシュを格納するために使用されるソルトの違いであり、これがまさに当面の問題です: 2 つのソルトが同じハッシュを生成しています。
Rembmer: 出力は次の形式になります。
ここで、## は、アルゴリズムが実行される反復回数を決定する log-base-2 です。
編集2:
コメントでは、ユーザーが私の出力を再現できなかったため、追加情報を投稿するように要求されました。次のコードの実行:
次の出力が生成されます。
お役に立てれば。
c# - オープンソースのBlowfishAPIを理解する上での問題
エンコーディングのプロセス。その仕事
//メソッドstrを配列に開始します
//endメソッド
//クラスblowfishbegin
android - Androidでblowfish暗号化を使用していますか?
Androidアプリケーション内でblowfish暗号を使用しようとしています。
Androidプラットフォームはblowfishをサポートしているようです(ソースコードに含まれているようです)が、次を使用して暗号を取得しようとすると、
c# - .NET内でのBlowfish暗号化の使用
私はBlowfishの暗号化と復号化を行う必要があるプロジェクトに取り組んでいます。他の人がこれを行うために使用しているが、.NET C#環境内で何も見つからないものはありますか?
理想的には、exeの実行に依存しないものが欲しいです。これは、最終的にexeが公開されていないライブサーバー上に存在するためです。
SOに関する古い投稿をいくつか読んだことがありますが、適切なものはありません。
何か案は?ありがとう