ホームページ Java &#&チュートリアル Javaを使用してRSA暗号化アルゴリズムを実装する方法

Javaを使用してRSA暗号化アルゴリズムを実装する方法

Sep 20, 2023 pm 02:33 PM
Javaの実装 RSA暗号化アルゴリズム 暗号化の実装手順

Javaを使用してRSA暗号化アルゴリズムを実装する方法

Java を使用して RSA 暗号化アルゴリズムを実装する方法

RSA (Rivest-Shamir-Adleman) は非対称暗号化アルゴリズムであり、最も一般的に使用される暗号化アルゴリズムの 1 つです。現在のアルゴリズムは 1 つです。この記事では、Java 言語を使用して RSA 暗号化アルゴリズムを実装する方法を紹介し、具体的なコード例を示します。

  1. キー ペアの生成

まず、公開キーと秘密キーで構成される 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 でエンコードされた文字列に変換されます。

  1. 公開キーを使用してデータを暗号化する

次に、公開キーを使用してデータを暗号化します。以下は、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 でエンコードされた文字列に変換します。

  1. 秘密キーを使用してデータを復号化する

最後に、秘密キーを使用して暗号化されたデータを復号化します。以下は、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Javaを使用して動的プログラミングアルゴリズムを実装する方法 Javaを使用して動的プログラミングアルゴリズムを実装する方法 Sep 19, 2023 am 11:16 AM

Java を使用して動的プログラミング アルゴリズムを実装する方法 動的プログラミングは、多段階の意思決定問題を解決するための最適化手法です。問題を複数の段階に分解します。各段階は既知の情報に基づいて意思決定を行い、各段階での決定結果を記録します。後続の段階で使用されます。実際のアプリケーションでは、動的計画法は通常、最短経路、最大部分列合計、ナップザック問題などの最適化問題を解決するために使用されます。この記事では、Java 言語を使用して動的プログラミング アルゴリズムを実装する方法を紹介し、具体的なコード例を示します。 1. 動的計画法アルゴリズムの基本原理

Javaを使用してRSA暗号化アルゴリズムを実装する方法 Javaを使用してRSA暗号化アルゴリズムを実装する方法 Sep 20, 2023 pm 02:33 PM

Java を使用して RSA 暗号化アルゴリズムを実装する方法 RSA (Rivest-Shamir-Adleman) は非対称暗号化アルゴリズムであり、現在最も一般的に使用されている暗号化アルゴリズムの 1 つです。この記事では、Java 言語を使用して RSA 暗号化アルゴリズムを実装する方法を紹介し、具体的なコード例を示します。キー ペアの生成 まず、公開キーと秘密キーで構成される RSA キーのペアを生成する必要があります。公開キーはデータの暗号化に使用でき、秘密キーはデータの復号化に使用できます。以下は、RSA キー ペアを生成するコード例です。

Javaを利用したオンライン試験システムの試験日程調整機能の実装 Javaを利用したオンライン試験システムの試験日程調整機能の実装 Sep 25, 2023 am 08:45 AM

オンライン試験システムの試験配置調整機能の Java 実装 はじめに: インターネット技術の発展に伴い、試験や評価にオンライン試験システムを使用する学校や訓練機関が増えています。試験スケジュールの調整は、オンライン試験システムの重要な機能であり、管理者が実際の状況に応じて試験時間や試験関連情報を柔軟に調整するのに役立ちます。この記事では、Web試験システムの試験日程調整機能をJavaプログラミングで実装する方法と具体的なコード例を詳しく紹介します。データベース設計検討調整機能ニーズ

Javaを使用してKruskalアルゴリズムを実装する方法 Javaを使用してKruskalアルゴリズムを実装する方法 Sep 19, 2023 am 11:39 AM

Java を使用してクラスカルのアルゴリズムを実装する方法 クラスカルのアルゴリズムは、最小スパニング ツリー問題を解決するために一般的に使用されるアルゴリズムで、エッジをエントリ ポイントとして使用して、最小スパニング ツリーを徐々に構築します。この記事では、Java を使用して Kruskal のアルゴリズムを実装する方法を詳しく説明し、具体的なコード例を示します。アルゴリズム原理 クラスカルのアルゴリズムの基本原理は、すべてのエッジを重みの小さいものから大きいものの順にソートし、次に重みの小さいものから大きいものの順にエッジを選択することですが、サイクルを形成することはできません。具体的な実装手順は次のとおりです。

Javaで実装された推奨アルゴリズムと実装 Javaで実装された推奨アルゴリズムと実装 Jun 18, 2023 pm 02:51 PM

インターネットの発展に伴い、ネットワーク上のデータ量が爆発的に増加し、大量の情報に直面したユーザーが本当に必要なコンテンツを迅速かつ正確に見つけることが困難になっています。時代の要請に応じて登場したレコメンドアルゴリズムは、ユーザーの行動データを記録・分析することでユーザーに合わせたサービスやおすすめコンテンツを提供し、ユーザーの満足度やロイヤルティを向上させます。 Java は、大規模なソフトウェア開発に選ばれる言語として、推奨アルゴリズムの実装でもよく使われます。 1. 推奨アルゴリズム 推奨アルゴリズムは、ユーザーのインタラクション、行動、および関心データを分析およびマイニングする方法です。

Java は、フル機能のオンライン チーム ビルディング アクティビティ予約システムの論理プロセスを実装します。 Java は、フル機能のオンライン チーム ビルディング アクティビティ予約システムの論理プロセスを実装します。 Jun 27, 2023 am 11:46 AM

チームビルディング活動が徐々に企業文化となるにつれ、従業員のためにチームビルディング活動を計画し、予約する方法を模索し始めている企業が増えています。そして、オンラインのチームビルディングアクティビティ予約システムが登場しました。 Java は広く使用されているプログラミング言語であり、企業がオンライン予約システムを開発する際に優れた利便性と柔軟性を提供します。この記事では、Java を使用してフル機能のオンライン チーム ビルディング アクティビティ予約システムを実装する論理プロセスを段階的に紹介します。ステップ 1: システム要件と機能を決定する コードの作成を開始する前に、システムが達成する必要があるすべての要件を決定する必要があります。

Javaを使用して倉庫管理システムの在庫調整機能を実装する方法 Javaを使用して倉庫管理システムの在庫調整機能を実装する方法 Sep 24, 2023 pm 05:09 PM

Java を使用して倉庫管理システムの在庫調整機能を実装する方法 物流および倉庫業界の継続的な発展に伴い、倉庫管理システムは企業が効率と管理能力を向上させるために不可欠なツールとなっています。在庫調整は倉庫管理システムの重要な機能モジュールであり、商品の在庫状況を正確に把握し、タイムリーな調整と統計を行い、業務効率を向上させるために非常に重要です。この記事では、Javaプログラミング言語を使用して倉庫管理システムの在庫調整機能を実装する方法と、具体的なコード例を紹介します。まず、考慮する必要があるのは、

Javaを使用して選択ソートアルゴリズムを実装する方法 Javaを使用して選択ソートアルゴリズムを実装する方法 Sep 19, 2023 am 09:46 AM

Java で選択ソート アルゴリズムを実装する方法 選択ソート アルゴリズムは、シンプルで直感的なソート アルゴリズムであり、その基本的な考え方は、ソートされていない要素から最小 (または最大) の要素を見つけて、ソートされたシーケンスの最後に置くことです。このようにして、順序付けられたシーケンスが徐々に構築されます。以下では、Java コード例の形式で選択ソート アルゴリズムを実装する方法を紹介します。コード実装: publicclassSelectionSort{publicstaticvoidselect

See all articles