ホームページ  >  記事  >  Java  >  Java の非対称暗号化暗号

Java の非対称暗号化暗号

王林
王林転載
2023-08-19 10:25:15524ブラウズ

暗号化は、第三者による干渉から通信を保護するためのさまざまな技術の研究と実践です。ネットワークセキュリティに使用されます。私たちは、機密データを保護するための方法と慣行の開発に努めます。暗号化の唯一の目的は、攻撃者からデータを保護することです。非対称暗号化は、公開/秘密キー暗号化とも呼ばれます。名前が示すように、秘密キーは秘密のままですが、公開キーは配布できます。暗号化は、2 つのキー間の数学的関係であり、1 つは暗号化用、もう 1 つは復号化用です。たとえば、2 つのキー「A1」と「A2」がある場合、キー「A1」が暗号化に使用されると、「A2」が復号化に使用され、その逆も同様です。

非対称暗号化には RSA アルゴリズムを使用し、最初にキーのペア (公開キー、秘密キー) を生成します。

Java における非対称暗号化の暗号化

非対称キーを生成するには、次の手順に従うことができます −

  • まず、SecureRandom クラスを使用して公開キーと秘密キーを生成します。乱数を生成するために使用されます。

  • RSA アルゴリズムを使用してキーを生成します。このクラスは、キー生成アルゴリズムを示す文字列変数を渡すために使用される getInstance() メソッドを提供し、キー ジェネレーター オブジェクトに戻ります。

  • 乱数を渡して、2048 ビットのキー サイズでキー ジェネレーター オブジェクトを初期化します。
  • これで、秘密鍵が生成され、DatatypeConvertor を使用して 16 進数形式に変換できる鍵を見ていきたいと思います。
  • 上記のメソッドを実装します −

    ###構文### リーリー ###出力###
    // Java program to create a
    // asymmetric key
    
    package java_cryptography;
    import java.security.KeyPair;
    import java.security
    	.KeyPairGenerator;
    import java.security
    	.SecureRandom;
    import javax.xml.bind
    	.DatatypeConverter;
    
    // Class to create an asymmetric key
    public class Asymmetric {
    
    	private static final String RSA
    		= "RSA";
    
    	// Generating public and private keys
    	// using RSA algorithm.
    	public static KeyPair generateRSAKkeyPair()
    		throws Exception
    	{
    		SecureRandom secureRandom
    			= new SecureRandom();
    
    		KeyPairGenerator keyPairGenerator
    			= KeyPairGenerator.getInstance(RSA);
    
    		keyPairGenerator.initialize(
    			2048, secureRandom);
    
    		return keyPairGenerator
    			.generateKeyPair();
    	}
    
    	// Driver code
    	public static void main(String args[])
    		throws Exception
    	{
    		KeyPair keypair
    			= generateRSAKkeyPair();
    
    		System.out.println(
    			"Public Key is: "
    			+ DatatypeConverter.printHexBinary(
    				keypair.getPublic().getEncoded()));
    
    		System.out.println(
    			"Private Key is: "
    			+ DatatypeConverter.printHexBinary(
    				keypair.getPrivate().getEncoded()));
    	}
    }
    
  • 次の手順を実行してプログラム コードを作成できます −

暗号クラスを使用して、暗号化と復号化という 2 つの異なるモードを作成します。暗号化キーは秘密キー、復号化キーは公開キーです。

暗号に対して doFinal() メソッドを呼び出します。これにより、データに対して単一部分の操作を実行して暗号化/復号化することも、複数部分の操作を完了してバイト配列を返すこともできます。

  • 最後に、暗号化に ENCRYPT_MODE を使用した後、暗号文を取得しました。

  • ###コード### リーリー ###出力### リーリー ###結論は###
  • したがって、この記事では、RSA アルゴリズムを使用して、「これは RSA を使用して暗号化したいプレーンテキストです」という暗号化テキストを作成しました。

以上がJava の非対称暗号化暗号の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。