Heim  >  Artikel  >  Java  >  Asymmetrische Verschlüsselungskryptographie in Java

Asymmetrische Verschlüsselungskryptographie in Java

王林
王林nach vorne
2023-08-19 10:25:15570Durchsuche

Kryptozoologie ist das Studium und die Praxis verschiedener Techniken zum Schutz der Kommunikation vor Störungen durch Dritte. Es dient der Netzwerksicherheit. Wir versuchen, Methoden und Praktiken zum Schutz sensibler Daten zu entwickeln. Das einzige Ziel der Kryptografie besteht darin, Daten vor Angreifern zu schützen. Asymmetrische Verschlüsselung wird auch als Public/Private-Key-Verschlüsselung bezeichnet. Der private Schlüssel bleibt, wie der Name schon sagt, privat, während der öffentliche Schlüssel weitergegeben werden kann. Verschlüsselung ist eine mathematische Beziehung zwischen zwei Schlüsseln, einem zur Verschlüsselung und einem zur Entschlüsselung. Wenn es beispielsweise zwei Schlüssel „A1“ und „A2“ gibt, dann wird, wenn der Schlüssel „A1“ zur Verschlüsselung verwendet wird, „A2“ zur Entschlüsselung verwendet und umgekehrt.

Wir verwenden den RSA-Algorithmus zur asymmetrischen Verschlüsselung. Zuerst generieren wir ein Schlüsselpaar (öffentlicher Schlüssel, privater Schlüssel).

Kryptographie der asymmetrischen Verschlüsselung in Java

Um einen asymmetrischen Schlüssel zu generieren, können die folgenden Schritte ausgeführt werden: −

  • Zuerst verwenden wir die SecureRandom-Klasse, um die öffentlichen und privaten Schlüssel zu generieren. Es wird zur Generierung von Zufallszahlen verwendet.

  • Durch die Verwendung des RSA-Algorithmus zum Generieren von Schlüsseln stellt diese Klasse die Methode getInstance() bereit, die zum Übergeben einer Zeichenfolgenvariablen verwendet wird, die den Schlüsselgenerierungsalgorithmus angibt, und die zum Schlüsselgeneratorobjekt zurückkehrt

  • Initialisieren Sie das Schlüsselgeneratorobjekt mit einer Schlüsselgröße von 2048 Bit und übergeben Sie eine Zufallszahl.
  • Jetzt wird der geheime Schlüssel generiert und wir wollen uns den Schlüssel ansehen, den wir mit DatatypeConvertor in das Hexbinärformat konvertieren können
  • Jetzt implementieren Sie die obige Methode −

Syntax

// 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()));
	}
}

Ausgabe

<p style="color:#D2593F;"><img src="https://img.php.cn/upload/article/000/465/014/169241191890148.jpg" alt="Asymmetrische Verschlüsselungskryptographie in Java" /><b></b></p>

Sie können jetzt die folgenden Schritte ausführen, um Programmcode zu erstellen −

    Wir verwenden die Cipher-Klasse, um zwei verschiedene Modi zu erstellen: Verschlüsselung und Entschlüsselung. Der Verschlüsselungsschlüssel ist der private Schlüssel und der Entschlüsselungsschlüssel ist der öffentliche Schlüssel.
  • Rufen Sie die doFinal()-Methode für die Chiffre auf, die eine einteilige Operation an den zu verschlüsselnden/entschlüsselnden Daten durchführen oder eine mehrteilige Operation abschließen und ein Byte-Array zurückgeben kann.
  • Endlich haben wir den Chiffretext erhalten, nachdem wir ENCRYPT_MODE zur Verschlüsselung verwendet haben.
  • Programm, Code
// Java program to perform the
// encryption and decryption
// using asymmetric key

package java_cryptography;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.util.Scanner;

import javax.crypto.Cipher;
import javax.xml.bind
	.DatatypeConverter;

public class Asymmetric {

	private static final String RSA
		= "RSA";
	private static Scanner sc;

	// Generating public & 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();
	}

	// Encryption function which converts
	// the plainText into a cipherText
	// using private Key.
	public static byte[] do_RSAEncryption(
		String plainText,
		PrivateKey privateKey)
		throws Exception
	{
		Cipher cipher = Cipher.getInstance(RSA);
		cipher.init(Cipher.ENCRYPT_MODE, privateKey);
		return cipher.doFinal(
			plainText.getBytes());
	}

	// Decryption function which converts
	// the ciphertext back to the
	// original plaintext.
	public static String do_RSADecryption(
		byte[] cipherText,
		PublicKey publicKey)
		throws Exception
	{
		Cipher cipher
			= Cipher.getInstance(RSA);

		cipher.init(Cipher.DECRYPT_MODE,
					publicKey);
		byte[] result
			= cipher.doFinal(cipherText);

		return new String(result);
	}

	// Driver code
	public static void main(String args[])
		throws Exception
	{
		KeyPair keypair
			= generateRSAKkeyPair();

		String plainText = "This is the PlainText "+ "I want to Encrypt using RSA.";

		byte[] cipherText
			= do_RSAEncryption(
				plainText,
				keypair.getPrivate());

		System.out.println(
			"The Public Key is: "
			+ DatatypeConverter.printHexBinary(
				keypair.getPublic().getEncoded()));

		System.out.println(
			"The Private Key is: "
			+ DatatypeConverter.printHexBinary(
				keypair.getPrivate().getEncoded()));

		System.out.print("The Encrypted Text is: ");

		System.out.println(
			DatatypeConverter.printHexBinary(
				cipherText));

		String decryptedText
			= do_RSADecryption(
				cipherText,
				keypair.getPublic());

		System.out.println(
			"The decrypted text is: "
			+ decryptedText);
	}
}

Ausgabe

<p style="text-align: center; color: rgb(210, 89, 63);"><img src="https://img.php.cn/upload/article/000/465/014/169241191871435.jpg" alt="Asymmetrische Verschlüsselungskryptographie in Java" /><b></b></p>

Fazit

Daher haben wir in diesem Artikel mithilfe des RSA-Algorithmus den verschlüsselten Text „Dies ist der Klartext, den ich mit RSA verschlüsseln möchte“ erstellt

Das obige ist der detaillierte Inhalt vonAsymmetrische Verschlüsselungskryptographie in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen