Heim >Java >javaLernprogramm >Asymmetrische Verschlüsselungskryptographie in Java
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).
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
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())); } }
<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>
// 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); } }
<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>
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!