問題タブ [secure-random]
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.
java - 多くの乱数を生成する効率的な方法
非常に短い時間で大量の乱数を生成する必要がある Java メソッドがあります。私の最初のアプローチは、Math.random (これは非常に高速に動作します) を使用することでしたがMath.random
、他の背後で非常に迅速に呼び出すため、「ランダム」は実際にはランダムではない (またはランダムではない) と推測されます。 (ただし、できるだけランダムにする必要があります)。
2 つの質問があります。
- 非常に短い時間での呼び出しの数のために、ランダム出力のランダム性が低下するという私の推測は正しいですか? 1. の答えが「はい」の場合:
- ランダム性の少ない問題を解決するための最速の方法 (呼び出しごと) は何でしょうか?
私はすでに をSecureRandom
いじりましたが、通常の Math.random よりも少なくとも 15 倍遅く、私の要件には遅すぎます。
java - 静的トークン生成?
この質問を見つけましたランダムな英数字の文字列を生成する方法は? 回答には次のコードが含まれています。
そして私の質問は私が作ることができnextSessionId
static
ますか?
技術的にはできることはわかっていますが、意図的に非静的にしたかどうかは興味があります。おそらく著者は私の質問を読まないだろうし、彼が何を考えていたのか説明もしないだろうと私は知っている.この答え。オブジェクトを作成しても何も得られないため、このメソッドを非静的にする意味はないと思いSessionIdentifierGenerator
ます。オブジェクトを作成せずに nextSessionId を呼び出すことをお勧めしSessionIdentifierGenerator
ます。
java - Javaで特定のビットサイズのランダム出力を作成する方法は?
ビット数が常にサイズ k になるランダムな英数字文字列を作成したいと考えています。サイズ k は比較的大きなものになります (128 から 2048 以上の範囲)。私はこの優れたスレッドRandom
を読んでおり、クラスを使用して何かを理解しようとしてSecureRandom
いますが、役に立ちません。
より正確には、結果は必ずしも文字列である必要はありません。ランダムでビット数が常に k である限り、結果は文字列である必要はありません。
java - 同じ文字列、キー、および SecureRandom を使用した Java Cipher の暗号化が常に異なるのはなぜですか?
皆様からのコメントありがとうございます。
しかし、私はこの問題を説明しなければなりません。
安全性が低下する可能性があるため、修正ランダムジェネレーターを使用して暗号化の結果を比較すべきではないことはわかっています。ただ、あくまでテストでやりたいだけで、実走ではランダムという独自の仕組みを使っています。
場合は、次の手順でアカウント/パスワードを使用してサーバーにログインする必要がある場合です。
- サーバーから情報を取得します: abcom/get_cipher.cgi。
- 応答を受け取り、それを解析し、情報を取得して暗号を作成します。
- 暗号を使用してアカウント/パスワードを暗号化し、次の URL abcom/login.cgi?encrypted={encrypted_account_password} を構成します。
これは複雑なプロセスであり、サーバーにプロトコルの変更を要求することはできません。ログインプロセス全体をテストしたい。したがって、偽のアカウント/パスワードを提供し、結果を解読せずに生成された URL が正しいかどうかを確認しようとしました (結果を解読する場合、このテスト ケースでは、暗号化された結果を解読し、URL を解析する必要があることを意味します)。関連情報を抽出すると、テストに関係のない情報が多すぎます. さらに、ログイン プロセスに何らかの変更を加えると、テスト ケースの解読および解析プロセスを変更する必要がある場合があります.)
つまり、ハッシュ関数は私には適していません。(元のログイン プロセスはハッシュを使用しないため、テスト ケースでテストしたくありません。さらに、ハッシュの結果が正しいことを確認したとしても、ログイン プロセスが正しいことを証明するものではありません。)
===元の質問は次のとおりです===
ログインが必要なプログラムがあります。ネットワーク上でパスワードを平文で転送しないようにするには、パスワードを暗号化する必要があります。つまり、ログイン プロセスには暗号化フェーズが含まれます。
次に、ログイン プロセス全体のテスト ケースを作成します。同じアカウントとパスワードを使えば暗号化結果は同じだと思います。
暗号化プロセスで SecureRandom を使用する可能性があるため、次のコードのように Mockito による偽の SecureRandom を記述します。
generateRandomWithFixSeed()は、同じキーを持つ Random を新しく作成するため、同じ結果が生成されます。generateSecureRandomWithFixSeed()は、Makito を使用して関数呼び出し nextBytes() を検出し、常に乱数の結果を返します。テストtest_SecureRandom_WithFixSeed()も、2 つの異なる SecureRandom インスタンスが同じ結果を生成することを示しています。
ただし、次のように暗号で generateSecureRandomWithFixSeed() を使用すると、常に同じ結果が返されるとは限りません。
ああ
ruby-on-rails - SecureRandom.urlsafe_base64 の使用方法
私はこれに本当に慣れていないので、2〜20文字のURLセーフトークンを作成する必要があり、英数字(文字と数字)のみが許可されています。このトークンは、支払いプロバイダーによる処理に使用します。
以下の方法をとったのですが、トークンが無効であるというエラーが出ました。URLセーフでありながら20文字を超えず、英数字のみを使用するようにメソッドを書き直すにはどうすればよいですか?
java - 特定の範囲で乱数を生成する
n
Android コードで 0 ~ 31 の乱数を生成しようとしています。以下は私が使用しているコードです:
indices_length
必要な乱数の数です。通常は 6、7、または 9 です。しかし、生成された配列を印刷すると、通常は重複が見られます。誰かが私が犯している間違いを指摘できますか. ランダムな重複を除外するために、以下のコード行を追加しました。
前もって感謝します!