問題タブ [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-me - J2ME AES復号化エラー(org.bouncycastle.crypto.InvalidCipherTextException:パッドブロックが破損しています)
弾力がある城でAESアルゴリズムを使用して暗号化と復号化を行っています
暗号化と復号化は問題なく機能しますが、プレーンテキストのサイズが大きいとエラーが発生します
時々それは解読されていないデータを与えています
暗号化:
復号化:
この復号化により、次のエラーが発生します
何が問題なのか?
java - 1.45 へのアップグレード時の BouncyCastle AES エラー
最近、BC 1.34 から 1.45 にアップグレードされました。以前にエンコードされたデータを次のようにデコードしています。
BC 1.45 を使用すると、次の例外が発生します。
編集: この問題の詳細。以下を使用して、パスフレーズから生のキーを生成しています。
私が見つけたのは、これにより BC 1.34 と 1.45 の 2 つの異なる値が得られるということです。
また、BouncyCastle に関連していない可能性もあります (Android 2.3 でテストしています)。
encryption - j2me の弾む城プロバイダ jar
私は暗号化とj2meの両方で新しいです。ばかげた質問かもしれませんが、弾む城から j9 vm で使用するプロバイダーをどこで入手できますか? jdk4,5,6用のもの(bcprov-jdk16-145.jarなど)と同じではありませんか? bouncycastle の Web サイトで見たように、j2me にはその軽量 API しかなく、プロバイダー API がないため、かなり混乱しています。
java - n と e が与えられた Java の RSA
私のアプリケーションは、公開 RSA キー (n と e) の生の部分を受け取り、これらを使用して暗号テキストを暗号化する必要があります。BouncyCastle を使用しようとしましたが、コードが機能しません。X509EncodedKeySpec を作成しようとすると、問題が発生します。
誰でもこれを機能させるのを手伝ってもらえますか? ここに私が持っているコードがあります:
本当の問題は、n と e が別々であり、それらを組み合わせる方法がわからないことだと思います。
digital-signature - 公開鍵の照合方法が同じかどうか
と を使用crypto.signText()
しCAPICOM
てテキストに署名しています。
だから、今私は Base64Encoded 署名付きテキストを持っています。
次に、BouncyCastle を使用して署名を検証しています。ここまでは大丈夫です。
今、私がやりたいことは、
ユーザーが初めてシステムにログインするときに、その署名を確認してから publicKey をデータベースに保存します。そして、次のログインから、データベースに保存された publicKey をそのユーザーに対して、新しく取得した署名付きテキストと照合したいと考えています。
署名されたテキストの公開鍵とデータベースに保存されている公開鍵が同じ場合、ユーザーのみがシステムにログインできます。
これを実装する方法は?(私はJAVA言語を使用しています)
c# - X.509 (非自己署名) クライアント証明書をプログラムで生成する
makecert.exe を使用せずに ASP.NET でオンザフライでクライアント証明書を生成することは可能ですか? 生成された証明書は、特定の CA 証明書で署名する必要があります (特定の CA 証明書はファイル システムに保存され、実行時に選択されます)。データを取得するには、生成された証明書を別のサーバーへの Web 要求に添付する必要があります。
流れ:
IIS で ASP.NET ページを要求するユーザー -> ASP.NET を使用して IIS で証明書が生成される -> 証明書が添付された別のサーバーを呼び出す -> データが返され、要求されたユーザーのページに表示されます。
.NET Framework を介してネイティブに行う方法を見つけることができず、次のようなさまざまなオプションを検討しました。
- CertEnroll.dll - このインターフェイスは、古い IEnroll4 インターフェイスを置き換えます。証明書要求の作成のみをサポートしているようです - IX509Enrollment: http://msdn.microsoft.com/en-us/library/aa377809(v=VS.85).aspx
- Bouncy Castle - 使用できない可能性があるオープン ソース プロジェクト (ライセンスの問題)
返信ありがとうございます。
.net - x509 C# の例?
x509 証明書の作成、署名などに関する記事を次々と読み込んでいますが、問題の解決策をまだ見つけていません。 . これが私がやろうとしていることです:
クライアント アプリの場合:
- 公開鍵と秘密鍵のペアを生成する
- キーを byte[] として取得し、ファイル システムに保存します。
- x509 証明書を生成する
- 署名リクエストを生成する
サーバー アプリの場合:
- 公開鍵と秘密鍵のペアを生成する
- キーを byte[] として取得し、ファイル システムに保存します。
- 自己署名 X509 証明書を作成する
- クライアント証明書に署名する
- 上記の #3 で、クライアント証明書が自己署名証明書によって署名されていることを検証します。
これをすべて.Netでプログラムで実行する必要があり、makecert.exeやopenssl.exeなどの外部.exeを使用せずに、インプロセスライブラリなどを使用する必要があります.
私は、Bouncy Castle、.Net Crypto、openssl などのさまざまなライブラリを使用して少しずつ解決しました。それらを永続化するなど。私がこれを実際よりもはるかに難しくしているのか、そこにドキュメントが大幅に不足しているのか、あるいはその両方です。
私は誰かが以前にこれをしなければならなかったと思います.私は本当に助けていただければ幸いです.
..そしてPKIBlackboxはオプションではありません-コストがかかりすぎます:(
c# - 生成された署名付き X.509 クライアント証明書が無効です (その CA への証明書チェーンがありません)
私は X.509 クライアント証明書の生成に Bouncy Castle を使用し、既知の CA を使用して署名しています。
まず、証明書ストアから CA 証明書を読み取り、クライアント証明書を生成し、CA を使用して署名します。証明書の検証は、次の問題に対して失敗しました
信頼されたルート機関への証明書チェーンを構築できませんでした。
私が理解しているように、これは証明書が CA に関連していないためです。
コードサンプルは次のとおりです。
c# - BouncyCastleを使用したX509証明書への署名-無効なデジタル署名
私は次の例に従いました:
ただし、結果の署名付きクライアント証明書は、Windowsで開くと次のエラーが発生します。
「このファイルは、次のように使用するには無効です:セキュリティ証明書」
とにかくインストールしてcertmgrで表示すると、認証パスはOKに見えます-自己署名認証局(問題ありません、問題ありません)が表示されますが、クライアント証明書のステータスは次のとおりです。
「この証明書には無効なデジタル署名があります。」
X509Certificate.Verify()を呼び出すと、次の例外がスローされます。
「証明書の署名用ではなく公開鍵が提示されました」
それでも、Pkcs10CertificationRequestから抽出されたものとまったく同じ公開鍵を使用しており、Verify()を呼び出したときは問題ありません。
何か案は?これに何日も苦労した後、私はこの最後のものを除いてすべての部分が機能するようになりました-そして本当に混乱しているのは、私の自己署名CA証明書が問題ないということです。クライアント証明書で何かが起こっているだけです。コードのブロック全体は次のとおりです。
encryption - RSA 公開鍵、javaME、弾む城の送信に関する問題
私は Java から暗号化も実装する JavaME へのインスタンス メッセージング アプリケーションの移植に取り組んでいます。問題は、公開鍵をサーバーに送信したいということです。デスクトップ クライアントには、このジョブの次のコードがあります。
サーバーには、キーを取得するための次のコードがあります。
getEncoded の API を調べたところ、DER でエンコードされた形式のキーをバイト配列 (http://www.docjar.com/docs/api/sun/s...tml) として返すことがわかりました。 #getEncoded)
JavaME での私の実装は次のとおりです。
ただし、JavaME で作成された DER でエンコードされたキーをサーバー コードで取得しようとすると、つまり次のようになります。
私は得る
興味深い点 : 通常の Java (getencoded() 関数を使用) からの DER でエンコードされたキーは、長さが 162 バイトのバイト配列ですが、バウンシー キャッスルを使用して JavaME でエンコードされた同じキー DER は長さが 140 バイトです。これらの 2 つの DER でエンコードされたキーは同じ長さであるべきではありませんか?つまり、DER でエンコードされた形式では同じキーなので、同じである必要があります。
私は何を間違っていますか?
確かに私はそれに気づきませんでした。問題は、bouncyCastle の PublicKey から subjectPublickeyInfo オブジェクトを作成する方法を知っていますか? 私はもう試した:
ByteArrayInputStream bIn = new ByteArrayInputStream(RSApublickey.toString().getbytes());
SubjectPublicKeyInfo info = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(bIn).readObject());
しかし、うまくいきませんでした。私も試しました:
ByteArrayInputStream(RSApublicKeyStructure.getEncoded());
SubjectPublicKeyInfo info = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(bIn).readObject());
実際、うまくいかないだろうと思っていましたが、試してみる必要がありました。では、どうすれば RSAkeyparameters から Subjectpublickeyinfo を作成できますか?(これは、bouncy のキャッスル API のあいまいさが本当に際立つポイントの 1 つだと思います)
再びあなたの応答に感謝します.あなたは私を正しい軌道に乗せました.