タグ付けされた質問 「cryptography」

暗号化は、プログラミングに関連している必要があります。暗号化は、とりわけ、暗号化、ハッシュ、デジタル署名をカバーしています。ソフトウェア開発に直接関係しない暗号化の質問は、crypto.stackexchange.comでよりよく尋ねられます。

10
PHPでパスワードをハッシュするためにbcryptをどのように使用しますか?
「PHPにパスワードを保存するためにbcryptを使用する、bcryptルール」というアドバイスを時々聞いています。 しかし、何bcryptですか?PHPはそのような機能を提供していません。Wikipediaはファイル暗号化ユーティリティについて混乱しています。Web検索では、異なる言語でのBlowfishの実装がいくつか明らかになっています。現在、Blowfishはを介してPHPでも利用できますが、mcryptパスワードの保存にどのように役立ちますか?Blowfishは汎用の暗号であり、2つの方法で機能します。暗号化できた場合は、復号化できます。パスワードには一方向ハッシュ関数が必要です。 説明は何ですか?


12
ハッシュアルゴリズムと暗号化アルゴリズムの基本的な違い
ハッシュと暗号化アルゴリズムの間に多くの混乱が見られます。次のことについて、より専門的なアドバイスを聞きたいです。 ハッシュと暗号化を使用する場合 ハッシュまたは暗号化アルゴリズムを(理論的/数学的なレベルから)異なるもの、つまりハッシュを不可逆にするもの(レインボーツリーの助けなし) 以下は、私が探していたほど詳細に説明しなかったいくつかの同様の SO質問です。 難読化、ハッシュ、暗号化の違いは何ですか? 暗号化とハッシュの違い

9
Java 256ビットAESパスワードベースの暗号化
256ビットのAES暗号化を実装する必要がありますが、オンラインで見つけたすべての例では「KeyGenerator」を使用して256ビットのキーを生成していますが、自分のパスキーを使用したいと思います。自分のキーを作成するにはどうすればよいですか?256ビットにパディングしてみましたが、キーが長すぎるというエラーが表示されます。私は無制限の管轄パッチをインストールしているので、それは問題ではありません:) つまり。KeyGeneratorは次のようになります... // Get the KeyGenerator KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); // 192 and 256 bits may not be available // Generate the secret key specs. SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); ここから取得したコード 編集 私は実際には、長すぎてビットではなく256バイトまでパスワードをパディングしていました。以下は、私がこれでいくつかの経験を積んだ今使用しているコードです。 byte[] key = null; // TODO byte[] input = null; // TODO byte[] …

10
ソフトウェアライセンスキーはどのように生成されますか?
ライセンスキーは、著作権侵害対策としての事実上の標準です。正直なところ、これは私に(in)Security Through Obscurityのように感じますが、ライセンスキーがどのように生成されるのかは本当にわかりません。ライセンスキー生成の良い(安全な)例は何ですか?彼らが使用している暗号プリミティブ(ある場合)は何ですか?メッセージダイジェストですか?もしそうなら、彼らはどのデータをハッシュするでしょうか?クラッカーが独自の鍵ジェネレータを作成するのを困難にするために、開発者はどのような方法を採用していますか?キージェネレータはどのように作られていますか?

16
「ダブルハッシュ」は、一度だけハッシュするよりも安全性が低いですか?
保存する前にパスワードを2回ハッシュすることは、1回だけハッシュするよりも安全ですか? 私が話しているのはこれを行うことです: $hashed_password = hash(hash($plaintext_password)); これだけではなく: $hashed_password = hash($plaintext_password); 安全性が低い場合、適切な説明(またはリンク)を提供できますか? また、使用されるハッシュ関数は違いを生みますか?同じハッシュ関数を繰り返す代わりに、md5とsha1を(たとえば)混在させると、違いはありますか? 注1:「ダブルハッシュ」とは、パスワードをよりわかりにくくするために、パスワードを2回ハッシュすることを指します。私は衝突を解決するためのテクニックについて話しているのではありません。 注2:本当に安全にするために、ランダムなソルトを追加する必要があることはわかっています。問題は、同じアルゴリズムで2回ハッシュすることがハッシュを助けるか傷つけるかです。

10
ハッシュされたパスワードフィールドに使用するデータタイプと長さは?
パスワードハッシュのしくみ(後で実装する予定)はわかりませんが、今すぐデータベーススキーマを作成する必要があります。 パスワードを4〜20文字に制限することを考えていますが、暗号化後にハッシュ文字列の長さが異なります。 では、これらのパスワードをデータベースに保存する方法は?

24
MD5ハッシュを復号化することは可能ですか?
誰かが私に、次のようなソフトウェアシステムを見たことがあると言っています。 他のシステムからMD5暗号化パスワードを取得します。 暗号化されたパスワードを復号化し、 システム独自のアルゴリズムを使用して、システムのデータベースにパスワードを保存します。 それは可能ですか?MD5ハッシュを復号化することは不可能/実現不可能であると私は思いました。 MD5辞書があることは知っていますが、実際の復号化アルゴリズムはありますか?

23
PIPとsetup.pyを含むPython暗号化パッケージのインストールに失敗しました
Python の暗号化パッケージをインストールするか、サイトpip install cryptographyからパッケージをダウンロードして実行すると、次のエラーが発生します。python setup.py D:\Anaconda\Scripts\pip-script.py run on 02/27/14 16:13:17 Downloading/unpacking cryptography Getting page https://pypi.python.org/simple/cryptography/ URLs to search for versions for cryptography: * https://pypi.python.org/simple/cryptography/ Analyzing links from page https://pypi.python.org/simple/cryptography/ Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2-cp26-none-win32.whl#md5=13e5c4b19520e7dc6f07c6502b3f74e2 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2.1-cp26-none-win32.whl#md5=00e733648ee5cdb9e58876238b1328f8 (from https://pypi.python.org/simple/cryptography/) because it is not compatible …
256 python  cryptography  pip 

5
ソルト文字列はどこに保存しますか?
データベースストレージのパスワードをハッシュするときは、常に適切なエントリごとのソルト文字列を使用しました。私のニーズのために、ソルトをハッシュされたパスワードの隣のDBに保存することは常にうまくいきました。 ただし、ソルトをデータベースとは別に保存することを推奨する人もいます。彼らの主張は、データベースが侵害された場合でも、攻撃者は特定のソルト文字列を考慮に入れてレインボーテーブルを作成し、一度に1つのアカウントをクラックすることができるというものです。このアカウントが管理者権限を持っている場合は、他のアカウントをクラックする必要はないかもしれません。 セキュリティの観点から、塩を別の場所に保管することは価値がありますか?サーバーコードとDBが同じマシン上にあるWebアプリケーションについて考えてみます。ソルトがそのマシンのフラットファイルに格納されている場合、データベースが危険にさらされている場合、ソルトファイルも同様に破損する可能性があります。 これに対する推奨される解決策はありますか?

5
PHPを使用した最も単純な双方向暗号化
一般的なPHPインストールで双方向暗号化を行う最も簡単な方法は何ですか? 文字列キーでデータを暗号化し、同じキーを使用して反対側で復号化できるようにする必要があります。 セキュリティはコードの移植性ほど大きな問題ではないので、できる限りシンプルにしたいと思います。現在、RC4実装を使用していますが、ネイティブでサポートされているものが見つかれば、不要なコードを大幅に節約できると思います。

9
PHP文字列をどのように暗号化および復号化しますか?
つまり、 Original String + Salt or Key --> Encrypted String Encrypted String + Salt or Key --> Decrypted (Original String) 多分次のようなもの: "hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g) "2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!" PHPでは、これをどのように行うことができますか? を使用しようとしましたCrypt_Blowfishが、うまくいきませんでした。

10
パスワードソルトはレインボーテーブル攻撃に対してどのように役立ちますか?
パスワードへのソルトの目的を理解するのに問題があります。主な用途はレインボーテーブル攻撃を阻止することであることは私の理解です。ただし、これを実装するために私が見たメソッドは、問題を実際に難しくするようには見えません。 私はソルトを次のように使用することを示唆する多くのチュートリアルを見てきました: $hash = md5($salt.$password) その理由は、ハッシュが元のパスワードではなく、パスワードとソルトの組み合わせにマッピングされるようになったためです。しかし$salt=foo、$password=barそして、と言い$hash=3858f62230ac3c915f300c664312c63fます。今、レインボーテーブルを持つ誰かがハッシュを逆にして、入力 "foobar"を考え出すことができます。次に、パスワードのすべての組み合わせ(f、fo、foo、... oobar、obar、bar、ar、ar)を試すことができます。パスワードを取得するのにさらに数ミリ秒かかる場合がありますが、それ以外はそれほど多くありません。 私が見た他の用途は私のLinuxシステムです。/ etc / shadowには、ハッシュされたパスワードが実際にソルトとともに保存されます。たとえば、「foo」のソルトと「bar」のパスワードは、次のようにハッシュされます$1$foo$te5SBM.7C25fFDu6bIRbX1。ハッカーがなんとかしてこのファイルを入手できたとしても、のリバースハッシュにte5SBM.7C25fFDu6bIRbXは "foo"が含まれていることがわかっているため、ソルトの目的はわかりません。 誰もがこれに当てることができる光をありがとう。 編集:助けてくれてありがとう。私が理解していることを要約すると、ソルトはハッシュされたパスワードをより複雑にするため、事前に計算されたレインボーテーブルに存在する可能性がはるかに低くなります。以前私が誤解していたのは、すべてのハッシュにレインボーテーブルが存在すると想定していたことです。


7
java.util.Randomとjava.security.SecureRandomの違い
私のチームはランダムトークンを生成するサーバー側のコード(Javaで)を渡されましたが、それについて質問があります- これらのトークンの目的はかなり機密性が高く、セッションID、パスワードリセットリンクなどに使用されます。したがって、誰かがトークンを推測したり、ブルートフォースで実行したりしないように、暗号的にランダムにする必要があります。トークンは「長い」ため、64ビット長です。 コードは現在、java.util.Randomクラスを使用してこれらのトークンを生成しています。ドキュメントのためのjava.util.Random明確では次のように述べています: java.util.Randomのインスタンスは暗号的に安全ではありません。代わりにSecureRandomを使用して、セキュリティ上重要なアプリケーションで使用するための暗号的に安全な疑似乱数ジェネレータを取得することを検討してください。 ただし、コードが現在使用している方法java.util.Randomはこれです。クラスをインスタンス化java.security.SecureRandomし、SecureRandom.nextLong()メソッドを使用して、java.util.Randomクラスのインスタンス化に使用されるシードを取得します。次に、java.util.Random.nextLong()メソッドを使用してトークンを生成します。 だから今私の質問-がjava.util.Random使用してシードされていることを考えると、それはまだ安全java.security.SecureRandomですか?java.security.SecureRandomトークンの生成にのみ使用するようにコードを変更する必要がありますか? 現在、コードシードRandomは起動時に1回です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.