Java で RSA を使用して非対称暗号化を実装する方法の例
この記事では、主に Java での RSA を使用した非対称暗号化の例に関する関連情報を紹介します。この部分の知識を理解するのに役立つ例がここに提供されています。必要な方は、
Java での RSA を使用した非対称暗号化の例を参照してください。
RSA は一般に次のように理解されています:あなたはただ考える必要があります: これは暗号化であるため、自分のメッセージを他の人に知られたくないので、自分だけがそれを復号化できるため、公開鍵は次のように結論付けることができます。暗号化を担当し、秘密キーを復号化します。同様に、これは署名なので、誰にも私になりすましてメッセージを送信してほしくありません。そのため、この署名を公開できるのは私だけであると結論付けることができます。秘密キーは署名を担当し、公開キーは検証を担当します。
実装コード:
package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher; import org.apache.commons.codec.binary.Base64; public class RSA { public static void main(String[] args) { JDKRSA(); } public static void JDKRSA() { try { // 构建密钥对儿 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic(); RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate(); System.out.println("Public Key : " + org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPublicKey.getEncoded())); System.out.println("Private Key : " + org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPrivateKey.getEncoded())); // 2.私钥加密,公钥解密---加密 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, privateKey); byte[] result = cipher.doFinal(DH.src.getBytes()); System.out.println("私钥加密,公钥解密------加密 : " + Base64.encodeBase64String(result)); // 3.私钥加密,公钥解密---解密 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, publicKey); result = cipher.doFinal(result); System.out.println("私钥加密,公钥解密------解密 : " + new String(result)); // 4.公钥加密,私钥解密---加密 x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); publicKey = keyFactory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); result = cipher.doFinal(DH.src.getBytes()); System.out.println("公钥加密,私钥解密------加密 : " + Base64.encodeBase64String(result)); // 5.公钥加密,私钥解密---解密 pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); result = cipher.doFinal(result); System.out.println("公钥加密,私钥解密------解密 : " + new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
出力結果を添付します:
Public Key : MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJcFshoP5xm94r2aTbe++aMZMzJtXHxDpqmMQ9aL1cEthr2Xtac+Eckv32Kzb4R8C/6vObNBfd8sWx9FU5N2y6cCAwEAAQ== Private Key : MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAlwWyGg/nGb3ivZpNt775oxkzMm1cfEOmqYxD1ovVwS2GvZe1pz4RyS/fYrNvhHwL/q85s0F93yxbH0VTk3bLpwIDAQABAkBdAA7rabug6IRGykztyFcmjxAuD5aSl358jnoAFuCtMo4skfxh1vR4ENFUE0Lt0zJ3CKVH0o9UQDNG0r4jeOGRAiEA3KuXps9OG0AXuxLggg0e7B1Os5C3gNrH2fMqAPjtpY0CIQCvM4EPfdrjjNQiM0ATVBT5jZnw3PRu33pdyISWuoMHAwIgDOLMSUZjxj2Y5Si2CYIgoyMW/G9f99tOvlBvzHy8y+UCIF94MVu/uQdGNlJsmv3tU4CpKLmXrZq9LHDuU1HPUJcBAiEAy/0OS2Q9EBfmPwhsGXF4WMxj4wG0xzNFWxSeZB0qxzk= 私钥加密,公钥解密------加密 : NXF87irBEmK3x/fW7IWY4GuA8AP4Rvj4DJSp2Cjjsoo5X/ScHHKdvYtlM+9TOUAvMeuKWk5WH70g53q7+E73zg== 私钥加密,公钥解密------解密 : Hello,sahadev! 公钥加密,私钥解密------加密 : hjL8928jCbNtVCRhKaYAxQNJmiIAktBskhff2I01pbaHtfGH6GJTcP1i345/3I9OzwoVFxvi/oXgVJsIsg7MOQ== 公钥加密,私钥解密------解密 : Hello,sahadev!
以上がJava で RSA を使用して非対称暗号化を実装する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。
