問題タブ [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 - Java - ソケットを介して証明書を送信する
ソケットを使用して、サーバーからクライアントに v3certificate を送信する必要があります。これを行うには: サーバー側で、 base64.encode でエンコードする証明書を生成し、それをクライアントに送信します。クライアント側で、証明書を含む文字列を受け取り、
サーバーコード:
クライアントコード
クライアント側で受け取った文字列を印刷すると、ほとんどすべてが機能し、余分な文字と証明書データを含むテキストが表示されます。しかし、クライアント側で証明書を作成するときにエラーが発生します。これはエラーです:
java.security.cert.CertificateException: java.io.IOException: DER length more than 4 bytes: 111
at org.bouncycastle.jce.provider.JDKX509CertificateFactory.engineGenerateCertificate(Unknown Source)
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:322)
そして、これはそれが由来する行です
誰でも私を助けることができますか?
前もって感謝します
java - 秘密鍵はAndroidとサーバーで異なります
hotpアルゴリズム(RFC 4226)を使用して、ワンタイムパスワードアプリケーションに取り組んでいます。otp生成用のAndroidアプリ(シミュレーター経由)と、検証用のサーバー側アプリがあります。どちらも正常に機能しており、テストに合格しています。
ただし、入力がハードコーディングされていて、入力が同じであっても、デバイスで生成している秘密鍵はサーバーで生成している秘密鍵と同じではありません。これにより、デバイスとサーバーで異なるワンタイムパスワードが生成され、有効なワンタイムパスワードを生成する機能が損なわれます。私はこれがなぜ起こっているのかを理解しようとしています、そしてそれについて私ができることがあれば。
シークレットキーを作成し、キーからワンタイムパスワードを生成するためのコードは、サーバーとデバイスシミュレーターの間で同一です。デバイスとサーバーのkeyspecsのバイトを確認しましたが、同じです。ただし、SecretKey.getEncoded()からバイトを表示すると、SecretKeyFactories(両方ともDESedeKeySpecsから)によって生成されたキーには、1つずつ微妙な違いがあります。トリプルDESの代わりにDESを使用すると、同様の違いが見られます。
興味深いのは、私のAndroidプロジェクトでは、KeySpecのバイトと生成されたSecretKeyは一貫していますが(切り捨てられていますが)、サーバーでは、KeySpecと生成されたSecretKeyのバイトに1つずつ違いがあることがあります。これは正常ですか?DESとトリプルDESを使用する際のパリティビットの変更について読んだので、これが問題かどうかはわかりません。
AndroidがBouncyCastleを使用していることも知っていますが、サーバーはSunJCEを使用しています。私の理解では、これは問題にはならないはずであり、2つの異なるプロバイダーを使用するときにこれが既知の発生であるかどうかを知りたいと思います。バウンシーキャッスルをサーバーサイドで取得する機能は非常に限られています。
アドバイスと悟りをお願いします?
c# - .Net での Bouncy Castle AES 256 暗号化のドキュメント?
Bouncy Castle 暗号化ライブラリを .Net プロジェクトに実装しようとしていますが、.Net 関連のドキュメントがあまり見つかりません。クラス/メソッドの構造は、豊富な Java 関連の例とはかけ離れています。
誰かがこれのためのいくつかの良い.Netの例を持っていますか?
ありがとう。
security - PGP署名および暗号化されたファイルの内部構造を説明するモデルを探しています
BouncyCastleを使用して既存のJavaコードをデバッグおよび拡張し、保護された添付ファイルを復号化および検証しようとしています。
BouncyCastleのサンプルを調べましたが、そこから抽出するのが難しいのは、PGPで保護された添付ファイルがどのように見えるかのモデルです。コードとさまざまなエラーから、PGPMarkerで表されるものがあると推測できます。次に、内部にPGPOnePassSignatureListなどがあるPGPCompressedDataを見つけることができます。これは、いつ相互に期待するか、署名と暗号化が別々に実行されたときにワンパス署名が存在するかどうかなどの問題を明確にしません(これらは私が直面した例ですが、質問のトピックではありません)。BCのjavadocはあまり説明していません(たとえば、PGPOnePassSignatureは「ワンパス署名オブジェクト」です)。
試行錯誤によってモデルをリバースエンジニアリングするのは時間のかかる作業です。これに関する優れたリソースをグーグルで検索できなかったので、おそらく他の誰かがそれを知っていることを願っています。
前もって感謝します。
java - Java で PKCS#8 秘密鍵を PEM に変換する
皆さん、こんにちは Java プログラムで生成した PKCS#8 秘密鍵を PEM エンコード ファイルに変換しようとしています。
プログラムを実行した後、私は両方の形式の秘密鍵と公開鍵を持っています(コードは機能するため表示されていません)。次に、この openssl コマンドを使用して、private.key を pem 形式のファイルに変換します。
private.pem と private2.pem を比較すると、それらは異なり、明らかに private.pem を使用しようとすると、有効なファイルではないと表示されます。
この秘密鍵を必要な PEM 形式に適切に変換するために、どの手順が欠けていますか? プログラム内から OpenSSL を使用することはできません。それ以外の場合は、その関数呼び出しを追加するだけです。このプログラムで BouncyCastle ライブラリにアクセスできるので、見落としている解決策があるかもしれません。
c# - ルートに(秘密鍵を使用して)証明書を挿入すると、LocalMachine証明書ストアが.NET4で失敗します
ローカルマシンのルート証明書ストアに秘密鍵を含む新しいCA証明書を挿入する際に問題が発生しました。
これが起こることです:
証明書が挿入され、すべてがダンディに見えます:(参照してください!)
注:それは秘密鍵を持っていると言っています。
つまり、 FindPrivateKeyでそれを見つけることができると言うでしょう
それはかわいいです....しかし、それは間違っています!(2匹の愚かな犬の参照)
そして、証明書のエクスポートダイアログは私にこの非常に細かいメッセージを与えます:
このコードは、このスニペットを使用して管理者になりすましているときに実行されます。ここをクリックしてください
なぜ知りたいのですか?
(Windows Server 2008R2およびWindows7でテスト済み)
いまいましい!
v3.5にコンパイルすると動作します!!!!
何をすべきか?
c# - BouncyCastle 復号化は機能しますが、暗号化は機能しませんか?
外部サービスから暗号化された文字列を取得しています。これを復号化し、BouncyCastle APIを使用して再暗号化する必要があります。
復号化はうまくいきましたが、暗号化はうまくいかないようです。暗号化方法によって生成された文字列を復号化しようとするInvalidCipherTextException
と、「不明なブロック タイプ」というメッセージが表示されます。
これは、インターフェイスしているサービスからのテキストを正常に復号化する復号化コードです。
これは私の暗号化方法であり、私の復号化方法が処理できる暗号化された文字列を生成していないようです:
この作業を行うために何が欠けているのかよくわかりません。ここに欠けていると思われる明らかなものはありますか?
c# - C# のみを使用してプログラムで X509 証明書を生成することは可能ですか?
C# とBouncyCastleライブラリを使用して、X509 証明書 (秘密キーを含む) をプログラムで生成しようとしています。Felix Kollmann によるこのサンプルのコードの一部を使用してみましたが、証明書の秘密鍵部分が null を返します。コードと単体テストは次のとおりです。
単体テスト:
java - Bouncy Castle Crypto で復号化中に不正な引数の例外が発生する
誰でも私を正しい方向に向けることができますか。キーの復号化中に不正な引数の例外が発生する理由がわかりません。これは以前は機能していました。ここにスタックトレースがあります。
java - デスクトップ AES ファイル IO が Android AES ファイル IO と互換性がないのはなぜですか?
AES を使用してプライベート データを暗号化するアプリケーションを Android からデスクトップに移植しました。どちらのアプリケーションも、独自に使用するためにデータを暗号化および復号化できますが、他のアプリケーション データを復号化することはできません。AES キー、IV、およびアルゴリズムは同じです。2 つのアプリケーションの主な違いは、android-sdk には BouncyCastle プロバイダーが既にセキュリティに追加されているのに対し、デスクトップ アプリケーションには BouncyCastle プロバイダーが必要であることです。
Android アプリ:
デスクトップ アプリ: