問題タブ [spongycastle]
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: BouncyCastle - SpongyCastle と条件付きコンパイル
Android が独自の古いバージョンの BouncyCastle 暗号ライブラリを出荷したおかげで、私は醜い状況に陥っています。クライアントがオンザフライでデータを暗号化および復号化する独自の Web サービスと REST をやり取りするライブラリを構築しました。クライアントは、Android 上のモバイル アプリケーション、または Oracle Java を実行するデスクトップ/サーバー コンピューターのいずれかです。
Android の場合は SpongyCastle が必要で、デスクトップ/サーバーの場合は BouncyCastle が必要です。これは、SpongyCastle JAR が署名されておらず、Oracle ランタイムがその暗号化を許可しないためです。
つまり、使用するライブラリに関係なく、コードはまったく同じです。パッケージ名が異なるため、インポートのみが異なります。C では条件付きコンパイルを使用してプラットフォーム固有のヘッダーを含めますが、Java ではそれほど多くはありません。それでも、ほとんど同じソースから 2 つのビルドを作成して、似たようなことを達成できる、あまり労力をかけない方法はありますか? まったく同じことを行う 2 つの .java ファイルが存在するのは本当に嫌ですが、インポートがいくつか異なるだけです。それはメンテナンスの悪夢です。
java - BC を使用して秘密鍵から EC 公開鍵を計算する
私のプログラムでは、Spongy Castle (Android の Bouncy Castle に相当) を使用して、PEM ファイルから EC 秘密鍵を正常に復元できます。ファイルに公開鍵が含まれていないため、秘密鍵から公開鍵を再計算しようとしています。
有効な公開鍵を計算できます。ただし、私の公開鍵には、元の参照 (92 バイト) よりもはるかに多くのデータ (311 バイト) が含まれています。これは、秘密鍵 (152 バイト) よりもさらに多くなります。
公開鍵の圧縮 (?) バージョンを取得するにはどうすればよいですか?
android - Spongy Castle (Bouncy Castle ディストリビューション) を使用して、Android で有効な ECDSA secp256r1/prime256v1 キーペアを生成する
Android で SpongyCastle を使用して ECDSA キー ペアを生成しようとしています。これはコードです:
公開鍵の例のようなものを常に取得するため、何かが間違っています。
3059301306072A8648CE3D020106082A8648CE3D03010703420004483ABA9F322240010ECF00E818C041A60FE71A2BD64C64CD5A60519985F110AEDE6308027D2730303F5E2478F083C7F5BB683DCAC22BFEB62F3A48BD01009F40
および秘密鍵:
308193020100301306072A8648CE3D020106082A8648CE3D030107047930770201010420219AB4B3701630973A4B2917D53F69A4BE6DAD61F48016BFEF147B2999575CB2A00A06082A8648CE3D030107A14403420004483ABA9F322240010ECF00E818C041A60FE71A2BD64C64CD5A60519985F110AEDE6308027D2730303F5E2478F083C7F5BB683DCAC22BFEB62F3A48BD01009F40
サイトのECDSA サンプルは無効な ECDSA 署名を提供します。それらは、同じサイトで生成されたより小さな秘密鍵とは常に "04" の公開鍵で始まるものとは非常に異なっているようです。
また、バックエンド検証で「無効なポイント エンコーディング 0x30」というエラーが表示されます。
バックエンド Java メソッド チェックは次のとおりです。
android - Android: InvalidKeySpecException: エンコードされたキーの仕様が認識されません
文字列から RSA 公開鍵を作成しようとすると。以下の例外が発生します。Android で生成されたキー (文字列、Swift を使用) を検証しようとしています。文字列を秘密鍵/公開鍵に変換する方法は?
例外
iOS の公開鍵:
bouncycastle - 有効な ECDSA EC キー ペアを生成するにはどうすればよいですか?
Android で SpongyCastle を使用して ECDSA キー ペアを生成しようとしています。これはコードです:
公開鍵の例のようなものを常に取得するため、何かが間違っています。
3059301306072A8648CE3D020106082A8648CE3D03010703420004483ABA9F322240010ECF00E818C041A60FE71A2BD64C64CD5A60519985F110AEDE6308027D2730303F5E2478F083C7F5BB683DCAC22BFEB62F3A48BD01009F40
および秘密鍵:
308193020100301306072A8648CE3D020106082A8648CE3D030107047930770201010420219AB4B3701630973A4B2917D53F69A4BE6DAD61F48016BFEF147B2999575CB2A00A06082A8648CE3D030107A14403420004483ABA9F322240010ECF00E818C041A60FE71A2BD64C64CD5A60519985F110AEDE6308027D2730303F5E2478F083C7F5BB683DCAC22BFEB62F3A48BD01009F40
サイトのECDSA サンプルで「無効な ECDSA 署名メッセージ」が表示されますが、同じサイトで生成されたより小さな秘密鍵とは常に「04」の公開鍵で始まるものとは非常に異なっているようです。
また、バックエンド検証で「無効なポイント エンコーディング 0x30」というエラーが表示されます。
バックエンド Java メソッド チェックは次のとおりです。