問題タブ [bouncycastle]
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 - AES および PBE で Bouncy Castle 軽量 API を使用する方法
JCEアルゴリズム「PBEWithSHA256And256BitAES-CBC-BC」を使用して作成された暗号文のブロックがあります。プロバイダーは BouncyCastle です。私がやりたいことは、BouncyCastle 軽量 API を使用してこの暗号文を復号化することです。Unlimited Strength Jurisdiction Policy Files をインストールする必要があるため、JCE を使用したくありません。
PBE および AES で BC を使用することに関しては、ドキュメントが不足しているようです。
これが私がこれまでに持っているものです。復号化コードは例外なく実行されますが、ゴミが返されます。
暗号コード、
解読コード、
c# - C、Exponent、Modulus のみを使用した RSA 復号化
RSACryptoServiceProvider を使用して復号化しようとしていますが、秘密鍵としてモジュラスと d のペアと指数しか持っていません。
RsaParameters 構造体はこれらに対応できません。「不正なキー」という例外を除いて、復号化時に私を拒否します。
私の理解では、このペアは、DQ DP INVERSEQ 部分全体なしで復号化するのに十分です。さらに、pyCrypto を使用した python で見つけた例では、上記の部分のみを使用する RSA.construct メソッドがあります。
.NET フレームワークまたは別のライブラリのクラスで可能ですか? BountyCastle で試してみましたが、うまくいきませんでした。
java - Javaでbouncycastleを使用してPrivateKeyUsage拡張機能を証明書に追加するにはどうすればよいですか?
拡張機能を追加したいX509Certificateがあります...PrivateKeyUsage拡張機能を追加したいのですが、PrivateKeyUsageオブジェクトを作成する方法やnotBefore&notAfter値を指定する方法がわかりません...ありがとう
java - 軽量 API を使用した Bouncy Castle RSA 鍵ペアの生成
驚くべきことに、Bouncy Castle の軽量 API の使用に関する Web 上の情報はほとんどありません。しばらく見回した後、基本的な例をまとめることができました。
私は RSA と舞台裏で行われている数学について基本的な理解を持っているので、何が何であるかを理解しpublicExponent
てstrength
います。私が収集したものから、適切なパディングが使用されている限り、それは小さい (3 のように) である可能性がありますpublicExponent
。phi(pq)
ただし、何certainty
を指すのかわかりません(パーセンテージを指す可能性があると述べた場所もありますが、確認したいです)。の使用SecureRandom
は自明です。RSAKeyGenerationParametersのドキュメントはまったく価値がありません (驚くことではありません)。私の唯一の推測は、生成されたキーの精度と関係があるということですが、もう一度確認したいと思います。certainty
だから私の質問は、との適切な値は何publicExponent
ですか?
追伸「状況次第です - 情報をどの程度安全にしたいか」と答えないでください。特に指定がない限り、最高度のセキュリティ (つまり、4096 ビットの RSA キー以上) を想定することはかなり安全です... Bouncy Castle の軽量 API の使用の良い例を示すソースへのリンクも歓迎します (私はJCA 実装またはそれに関連する例に関心のあるすべての人)。
java - AndroidでのPKCS10CertificationRequestの作成
私はAndroidとJavaの両方に非常に慣れていないので、ここで簡単なものが欠けていることを願っています。私がやりたいのは、単純なPKCS10証明書署名要求を作成することだけです。私のubuntuボックス(java-6-openjdk)でコンパイルして実行するコードがいくつかありますが、Androidエミュレーターでnullポインター例外をスローします:
デバッガーでは、PKCS10CertificationRequestを作成したようですが、エラーなしで(getEncoded()やtoString()など)何もできません。getEncoded()を呼び出すと、Androidエミュレーターで失敗します。これはスタックトレースです:
APIレベル7と8の両方でこれを試しました。システムのさまざまなコンポーネントのバージョンについて投稿できる詳細が他にもたくさんあることを知っています。私が言ったように、私はこれに不慣れなので、今、私は必ずしも最終的な答えよりも進むべき方向を探しています。
どうもありがとう、
アダムマックラー
java - バウンシーキャッスルのOAEPEncodingforRSA(Lightweight API)を適切に使用する方法
私はBouncyCastleのRSA(Lightweight API)の実装をいじって、基本を理解しました。JCEプロバイダー実装の仕様を見ると、RSAでさまざまなパディングスキームを使用できることに気付きました。私の理解では、デフォルトではnullパディングが使用されます。そこで、特にOAEPパディングの調査を開始しましOAEPWithSHA512AndMGF1Padding
た。グーグルで検索することはあまり役に立たなかったので、私はBCのソースコードを掘り下げ始め、org.bouncycastle.jce.provider.JCERSACipher
クラスを見つけました。しかし、すぐに見ると頭痛の種になりました...具体的には、コンストラクターinitFromSpec
に渡すことができる最後の2つのパラメーターが何であるかがわかりません。OAEPEncoding
BCのAPIによるとOAEPEncoding
、4つのパラメーターを許可するコンストラクターDigest mgf1Hash
はbyte[] encodingParams
最後の2つの引数として。マスク生成アルゴリズムのインスタンスを取得する方法がわからず、と呼ばれるバイト配列の背後にある目的も理解できないため、これは私を困惑させましたencodingParams
。以下のコードのarg3
との値はどうあるべきですか?arg4
java - JavaのSHA-256を介したハッシュ文字列
この辺りとインターネット全般を見てみると、弾力がある城が見つかりました。Bouncy Castle(または他の無料で入手可能なユーティリティ)を使用して、Javaで文字列のSHA-256ハッシュを生成したいと思います。彼らのドキュメントを見ると、私がやりたいことの良い例を見つけることができないようです。ここの誰かが私を助けることができますか?
java - DEROctetStringからKeyUsageへ
弾む城では、KeyUsageから始まるDEROctetStringを作成できます。
それでは、DEROctetStringからKeyUsageを取得するにはどうすればよいですか?
例:
KeyUsage拡張要求を使用して証明書要求を作成できるため、これが必要ですが、証明書要求だけでは、KeyUsage拡張を取り戻すことができません。
c# - BouncyCastle AesFastEngineで暗号化されたC#AesCryptoServiceProviderを使用してデータを暗号化する
Java側のBouncyCastleAesFastEngineで暗号化された標準のC#AesCryptoServiceProviderを使用してデータを復号化する必要があります。(Bounca Castleのc#実装を使用してデータを復号化することは問題ありません)
これを行う方法はありますか?
バウンシーキャッスルの実装で使用されているIVが見つかりません...何かありますか?
どんな助けでも本当に大丈夫でしょう!マーカス
編集:
次のコードは、AesFastEngineを初期化するために使用されます。
編集:
こんにちはGrec、あなたの答えに感謝します、しかしそれはまだ機能していません...私はここにダウンロードするためのサンプルソリューションを持っています。
2つのボタンをクリックすると、すでに別の暗号化された配列が表示されます... ??? 弾力がある城で生成された配列を復号化すると、暗号化されたデータの長さが無効であるという例外が発生します...
これが私が解読のために書いたコードです:
編集:
近づいています!RijndaelManaged Managedは機能していますが、暗号化されたデータが1バイト多くなります。他のすべてのバイトは同じです...私はたくさん試しましたが、弾力がある城で最後のバイトを取得する方法がわかりません...この最後のバイトがないと、RijndaelManagedでデータを復号化することはできません...
java - Java での PKCS#7 証明書の検証
Java の暗号化ルーチンに関するヘルプが必要です。
PKCS#7 署名が与えられた場合、そこに含まれるすべての証明書を信頼できるストアに対して検証したいと考えています。署名に含まれるすべての証明書は、有効な証明書パス (またはチェーンなど) を形成する正しい順序になっていると想定しているため、
- 最上位 (#0) は署名証明書です。
- 次のもの (#1) は #0 の署名に使用される中間証明書です。
- 次のもの (#2) は別の中間証明書で、#1 の署名に使用されます。
- 等々。
最後の証明書 (#N) は CA によって署名されています。
それが私がこれまでハッキングできたものです:
問題は、標準の Java クラスのようなものを使用してこれを行うにはどうすればよいかということCertPath
です。私は自転車を再発明しているという強い気持ちを持っています。または、誰かが BouncyCastle ライブラリの例を持っていれば、それも問題ありません。
おまけの質問: ルート証明書が自動的に選択されるように、信頼できるストアに対して証明書を検証する方法は?