이 기사에서는 Java에서 구현 된 RSA 암호화 및 암호 해독 알고리즘에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
import java.awt.alphacomposite; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image; import java.awt.renderinghints; import java.awt.image.bufferedimage; import java.io.file; java.io.fileInputStream; import java.io.fileoutputStream; import java.io.objectinputStream; import java.io.objectoutputStream; import java.security.key; import java.security.keypair; import java.security.keypairgenerator; java.security.security.security.security.security.security.security java.security.interfaces.rsaprivatekey; import java.security.interfaces.rsapublickey; import javax.crypto.cipher; public class rsautils {public static string makeykeyfile (string pubkeyfile, string prikeyyfile) {string result = 실패 "; Try {// 키어 게이터는 공개 및 개인 키 쌍을 생성하는 데 사용되며 RSA 알고리즘을 기반으로 객체가 생성됩니다. kyypairgenerator gen = kyypairgenerator.getinstance ( "rsa"); // 키 쌍 생성기를 초기화하면 키 크기는 1024 비트 gen.initialize (1024)입니다. // // 강한 랜덤 번호 생성 // securerandom random = new securerandom (); // gen.initialize (1024, random); // 키 쌍을 생성하고 쌍에 저장합니다. kyypair 쌍 = gen.generateKeyPair (); // 비공개 키 rsaprivatekey prikey = (rsaprivatekey) pair.getPrivate (); // 공개 키 rsapublickey pubkey = (rsapublickey) pair.getPublic (); // 비공개 키 파일 생성 객체 objectOutStream os = new ObjectOutputStream (새 FileOutputStream (prikeyFile)); os.writeobject (prikey); os.flush (); os.close (); // 공개 키 파일 생성 os = new ObjectOutputStream (new FileOutputStream (pubkeyFile)); os.writeobject (pubkey); os.flush (); os.close (); 결과 = "공개 키 파일 생성 ["+pubkeyfile+"] 개인 키 파일 생성 ["+prikeyfile+"]; } catch (예외 e) {e.printstacktrace (); } 반환 결과; } public static void main (String [] args) {try {String pubfile = "f : /images/pub.key"; 문자열 라이센스 = "f : /images/pri.key"; 문자열 결과 = null; // result = makeKeyFile (PubFile, 라이센스); 결과 = MarkPupra (pubfile, 라이센스); System.out.println (결과); } catch (예외 e) {e.printstacktrace (); }} public static string MarkPupra (문자열 pubfile, 문자열 라이센스) {문자열 results = "암호화 오류가 발생했습니다."; try {objectInputStream os = new ObjectInputStream (new FileInputStream (pubfile)); rsapublickey pubkey = (rsapublickey) os.readobject (); os.close (); os = new ObjectInputStream (new FileInputStream (Prifile)); rsaprivatekey prikey = (rsaprivatekey) os.readobject (); os.close (); 문자열 UTF = "UTF-8"; 문자열 msg = "## China %의 % people @+_"; // 공개 키를 사용하여 개인 키를 암호화 시스템으로 암호화합니다. 바이트 [] puk = handledata (pubkey, msg.getBytes (utf), 1); System.out.println ( "암호화 된 파일 데이터 :" + new String (puk, utf)); 바이트 [] dpuk = handledata (prikey, puk, 0); System.out.println ( "해독 된 파일 데이터 :" + new String (dpuk, utf)); msg = "jd#우리의 ¥+=#new"; // 개인 키를 사용하여 공개 키를 암호화 시스템으로 암호화합니다. 바이트 [] prk = handledata (prikey, msg.getBytes (utf), 1); System.out.println ( "암호화 된 파일 데이터 :" + new String (prk, utf)); 바이트 [] dprk = handledata (pubkey, prk, 0); System.out.println ( "해독 된 파일 데이터 :" + new String (dprk, utf)); 결과 = "암호화 및 암호 해독 완료"; } catch (예외 e) {e.printstacktrace (); } 결과를 반환합니다. } / ** * * @param k * @param data * @param 암호화 1 암호화 0 암호 해독 * @return * @throws 예외 * / public static byte [] handledata (키 키, 바이트 [] data, int type) 예외 {if (key! = null) {cipher ci = cipher.getinstance ( "rsa"); if (type == 1) {ci.init (cipher.encrypt_mode, key); 바이트 [] res = ci.dofinal (데이터); 리턴 레스; } if (type == 0) {ci.init (cipher.decrypt_mode, key); 바이트 [] res = ci.dofinal (데이터); 리턴 레스; }} return null; }}추신 : 암호화 및 암호 해독에 관심이있는 친구들 도이 사이트의 온라인 도구를 참조 할 수도 있습니다.
텍스트 온라인 암호화 및 암호 해독 도구 (AES, DES, RC4 등) :
http://tools.vevb.com/password/txt_encode
MD5 온라인 암호화 도구 :
http://tools.vevb.com/password/createmd5password
온라인 해시/해시 알고리즘 암호화 도구 :
http://tools.vevb.com/password/hash_encrypt
온라인 MD5/HASH/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 암호화 도구 :
http://tools.vevb.com/password/hash_md5_sha
온라인 SHA1/SHA224/SHA256/SHA384/SHA512 암호화 도구 :
http://tools.vevb.com/password/sha_encode
Java 관련 컨텐츠에 대한 자세한 내용은이 사이트의 주제를 확인하십시오. "Java Mathematical Operation Skills의 요약", "Java 데이터 구조 및 알고리즘에 대한 튜토리얼", "Java 캐릭터 및 문자열 운영 기술 요약", "Java 운영 Dom Node Skills 요약"및 "Java Cache 운영 기술의 요약"을 확인하십시오.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.