Java 'PKCS#12' キーストアに保存されている証明書を使用してファイルを暗号化および復号化する方法を説明できる人はいますか?
2 に答える
Eugene Mayevski に言及しているように、あなたの質問は間違っており、元の形式で回答することはできません。しかし、私はあなたのためにそれを少し明確にしようとします. PKCS#12 - 暗号形式は、証明書と秘密鍵を格納するためのものです。データを暗号化または復号化するときは、暗号の実装とコンテナーのコンテンツを使用します。PKCS#12
Java には、PKCS#12 キーストアを使用するためのサポートが組み込まれています。このコンテナーでの作業は、標準の JKS キーストアと大差ありません。
たとえば、JKS キーストアをロードするコード
KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType());
store.load(is, password.toCharArray());
および PKCS#12 キーストアをロードするコード
KeyStore store = KeyStore.getInstance("PKCS12");
store.load(is, password.toCharArray());
その後、キーストアのコンテンツに無制限にアクセスできます。Firefox でインポート/エクスポートを使用すると、奇妙なアクションを実行することなく、キーストアに格納された証明書とキーを取得できます。
Key key = store.getKey("alias_for_key", password.toCharArray());
鍵と証明書を取得したら、次は暗号化です。暗号化用。Cipher クラスのインスタンスが必要です。
Cipher c = Cipher.getInstance(key.getAlgorithm());
c.init(Cipher.ENCRYPT_MODE, key);
暗号を暗号化する準備ができました。暗号化データが比較的小さい場合は、update()
メソッドを使用できます。他の方法は、作成することCipherOutputStream
です。
復号化するには、異なるモードで暗号化を開始し、暗号化アルゴリズム、キーに依存します。対称アルゴリズム キーの場合は同じで、非対称アルゴリズムの場合は暗号化に公開キーを使用し、復号化には秘密キーを使用します。
この記事では、暗号化について詳しく学ぶことができます。
PEMファイルでのPKCS12暗号化の使用。
これを実行するには、最初にPFX(Personal File Exchange)形式のJavaキーストアが必要です。
Keytoolコマンド:
keytool -genkeypair -alias mykeystore -keypass lala -keystore
mykeystore.pfx -storepass lala -validity 10000 -keyalg RSA -keysize
2048 -storetype pkcs12
これにより、mykeystore.pfxファイルが生成されます。このファイルはFirefoxに証明書としてインポートできます。
インポート-Firefoxを開く–ツール–オプション–詳細–証明書の表示–証明書–インポート– PFXファイルの選択–インポート
エクスポート-証明書を選択-表示-詳細-X.509PEMにエクスポート)。(DERにエクスポートすることもできます)
1.秘密鍵
まず、PFXファイルから秘密鍵を抽出する必要があります。
2.公開鍵
次に、公開鍵を使用してファイルを暗号化する必要があります。ただし、最初に公開鍵が必要です。
3.公開鍵による暗号化
これで、ファイルを暗号化できる公開鍵ができました。
4.秘密鍵による復号化
これで、ファイルは暗号化され、受信側が送信/保存して…まあ…受信して復号化できるようになりました。復号化するには、秘密鍵が必要です。幸い、private.pemファイルに保存/保存されています。
5.AESキーを使用した暗号化/復号化
暗号化/復号化する別の方法は、AES256ビットキーを使用することです。キーはファイルごとにランダムに生成され、ファイルシステムに書き込まれます。次に、このAESキーは、上記のRSAメカニズムを使用して暗号化できます。これにより、大きなファイルの暗号化のパフォーマンスが向上します。