Rumah >Java >javaTutorial >Kriptografi penyulitan asimetri dalam Java
Cryptozoology ialah kajian dan amalan teknik yang berbeza untuk melindungi komunikasi daripada gangguan pihak ketiga. Ia digunakan untuk keselamatan rangkaian. Kami cuba membangunkan kaedah dan amalan untuk melindungi data sensitif. Satu-satunya matlamat kriptografi adalah untuk melindungi data daripada penyerang. Penyulitan asimetri juga dikenali sebagai penyulitan kunci awam/peribadi. Kunci persendirian, seperti namanya, akan kekal peribadi, manakala kunci awam boleh diedarkan. Penyulitan ialah hubungan matematik antara dua kunci, satu untuk penyulitan dan satu lagi untuk penyahsulitan. Sebagai contoh, jika terdapat dua kekunci "A1" dan "A2", maka jika kunci "A1" digunakan untuk penyulitan, "A2" digunakan untuk penyahsulitan dan sebaliknya.
Kami menggunakan algoritma RSA untuk penyulitan asimetri Mula-mula kami akan menjana sepasang kunci (kunci awam, kunci peribadi).
Untuk menjana kunci asimetri, langkah berikut boleh diikuti −
Pertama, kami menggunakan kelas SecureRandom untuk menjana kunci awam dan peribadi. Ia digunakan untuk menjana nombor rawak.
Dengan menggunakan algoritma RSA untuk menjana kunci Kelas ini akan menyediakan kaedah getInstance() yang digunakan untuk menghantar pembolehubah rentetan yang menandakan algoritma penjanaan kunci dan ia kembali kepada objek penjana kunci
Sintaks
// 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="Kriptografi penyulitan asimetri dalam 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="Kriptografi penyulitan asimetri dalam Java" /><b></b></p>
Atas ialah kandungan terperinci Kriptografi penyulitan asimetri dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!