ホームページ >Java >&#&チュートリアル >Javaを使用してRSA暗号化アルゴリズムを実装する方法
Java を使用して RSA 暗号化アルゴリズムを実装する方法
RSA (Rivest-Shamir-Adleman) は非対称暗号化アルゴリズムであり、最も一般的に使用される暗号化アルゴリズムの 1 つです。現在のアルゴリズムは 1 つです。この記事では、Java 言語を使用して RSA 暗号化アルゴリズムを実装する方法を紹介し、具体的なコード例を示します。
まず、公開キーと秘密キーで構成される RSA キーのペアを生成する必要があります。公開キーはデータの暗号化に使用でき、秘密キーはデータの復号化に使用できます。以下は、RSA キー ペアを生成するコード例です。
import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; public class RSAKeyGenerator { public static void main(String[] args) { try { // 创建RSA密钥对生成器 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); // 初始化密钥长度为2048位 keyPairGenerator.initialize(2048); // 生成密钥对 KeyPair keyPair = keyPairGenerator.generateKeyPair(); // 获取公钥 String publicKey = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded()); System.out.println("公钥:" + publicKey); // 获取私钥 String privateKey = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded()); System.out.println("私钥:" + privateKey); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } }
上記のコードは、KeyPairGenerator
クラスを使用して RSA キー ペアを生成し、Base64
を使用します。公開キーと秘密キーを結合するクラスは、Base64 でエンコードされた文字列に変換されます。
次に、公開キーを使用してデータを暗号化します。以下は、RSA 公開キーを使用してデータを暗号化するコード例です。
import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.PublicKey; import java.security.spec.X509EncodedKeySpec; public class RSAEncryptor { public static void main(String[] args) { try { // 原始数据 String data = "Hello, world!"; // 公钥字符串(Base64编码) String publicKeyString = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALloSaH+P1Z1Q1A/qs3gejbddklEiROWf2EadwZ68GBgzHk491icoP5x24SBOweiYA+xSqNxxFxSKuWpMu922hMCAwEAAQ=="; // 将公钥字符串转换为公钥对象 byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString); PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBytes)); // 创建RSA密码器 Cipher cipher = Cipher.getInstance("RSA"); // 使用公钥进行加密 cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedData = cipher.doFinal(data.getBytes("UTF-8")); // 输出加密后的数据(Base64编码) String encryptedDataString = Base64.getEncoder().encodeToString(encryptedData); System.out.println("加密后的数据:" + encryptedDataString); } catch (Exception e) { e.printStackTrace(); } } }
上記のコードは、データ暗号化に Cipher
クラスを使用します。まず、公開キー文字列を公開キー オブジェクトに変換します。次に、RSA 暗号を作成し、公開キーで初期化します。最後に、doFinal
メソッドを呼び出してデータを暗号化し、暗号化されたデータを出力用に Base64 でエンコードされた文字列に変換します。
最後に、秘密キーを使用して暗号化されたデータを復号化します。以下は、RSA 秘密キーを使用してデータを復号化するコード例です。
import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; public class RSADecryptor { public static void main(String[] args) { try { // 加密后的数据(Base64编码) String encryptedDataString = "3TiTv+AE9FF8NMMFYqx8y/Qz+uzFP/JEcsKGMJP+10r7SmNSDRsjMdK5Mbcz8zvrTaWCrIP4wmUgJhD7ZNoSmQ=="; // 私钥字符串(Base64编码) String privateKeyString = "MIIBOAIBAAJALloSaH+P1Z1Q1A/qs3gejbddklEiROWf2EadwZ68GBgzHk491icoP5x24SBOweiYA+xSqNxxFxSKuWpMu922hMCAwEAAQJAB+hKDm+GF1z5soiqn8DBw7SHf/XRGlxpViWOGTm+LJ6NOkOFH0RRg/cdqq9umemQvR+E6YUcM/NzqxIqJFQyQIhAO2dNYXRKeHNmKXa5vYqWYJIJtyKXXDhLvCRukRz4WFAiEAz2jl8eXSaevi8YMnxRwYnH/OgnesWr0AFr0QemF5sECIBzvqdPKUQzzw3CHjgcTJtX9p9q/MVN4upqvtbJ2WxsNAiAYET666mlWgGIca1ePAbtoB10vhWzDY5YxQ/eTkDssCQIgNoDd1BtSVbWDEUSN/9fCP6UekytJfGFeUZerYB0UlL0="; // 将私钥字符串转换为私钥对象 byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyString); PrivateKey privateKey = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes)); // 创建RSA密码器 Cipher cipher = Cipher.getInstance("RSA"); // 使用私钥进行解密 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedDataString)); // 输出解密后的数据 String decryptedDataString = new String(decryptedData, "UTF-8"); System.out.println("解密后的数据:" + decryptedDataString); } catch (Exception e) { e.printStackTrace(); } } }
上記のコードは、暗号化部分のコードと似ていますが、今回は暗号化されたデータの復号化に秘密キーが使用される点が異なります。同様に、最初に秘密キー文字列を秘密キー オブジェクトに変換します。次に、RSA 暗号を作成し、秘密キーで初期化します。最後に、doFinal
メソッドを呼び出して暗号化されたデータを復号化し、復号化されたデータを出力用の文字列に変換します。
概要
この記事では、Java 言語を使用して RSA 暗号化アルゴリズムを実装する方法を紹介し、具体的なコード例を示します。キー ペアを生成し、公開キーを使用してデータを暗号化し、秘密キーを使用してデータを復号化することで、RSA 暗号化アルゴリズムの機能を実装できます。この記事が RSA 暗号化アルゴリズムについて読者に役立つことを願っています。
以上がJavaを使用してRSA暗号化アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。