자바 rsa 암호 화 알고리즘 자바 구현
, RSA Java , , , , 。
package security;
import java.security.*;
import java.security.spec.*;
import java.security.interfaces.*;
import javax.crypto.spec.*;
import javax.crypto.interfaces.*;
import java.io.*;
import java.math.*;
public class RSADemo {
public RSADemo() {
}
public static void generateKey() {
try {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
PublicKey pbkey = kp.getPublic();
PrivateKey prkey = kp.getPrivate();
//
FileOutputStream f1 = new FileOutputStream("pubkey.dat");
ObjectOutputStream b1 = new ObjectOutputStream(f1);
b1.writeObject(pbkey);
//
FileOutputStream f2 = new FileOutputStream("privatekey.dat");
ObjectOutputStream b2 = new ObjectOutputStream(f2);
b2.writeObject(prkey);
} catch (Exception e) {
}
}
public static void encrypt() throws Exception {
String s = "Hello World!";
// e,n
FileInputStream f = new FileInputStream("pubkey.dat");
ObjectInputStream b = new ObjectInputStream(f);
RSAPublicKey pbk = (RSAPublicKey) b.readObject();
BigInteger e = pbk.getPublicExponent();
BigInteger n = pbk.getModulus();
System.out.println("e= " + e);
System.out.println("n= " + n);
// m
byte ptext[] = s.getBytes("UTF-8");
BigInteger m = new BigInteger(ptext);
// c
BigInteger c = m.modPow(e, n);
System.out.println("c= " + c);
//
String cs = c.toString();
BufferedWriter out =
new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("encrypt.dat")));
out.write(cs, 0, cs.length());
out.close();
}
public static void decrypt() throws Exception {
//
BufferedReader in =
new BufferedReader(
new InputStreamReader(new FileInputStream("encrypt.dat")));
String ctext = in.readLine();
BigInteger c = new BigInteger(ctext);
//
FileInputStream f = new FileInputStream("privatekey.dat");
ObjectInputStream b = new ObjectInputStream(f);
RSAPrivateKey prk = (RSAPrivateKey) b.readObject();
BigInteger d = prk.getPrivateExponent();
//
BigInteger n = prk.getModulus();
System.out.println("d= " + d);
System.out.println("n= " + n);
BigInteger m = c.modPow(d, n);
//
System.out.println("m= " + m);
byte[] mt = m.toByteArray();
System.out.println("PlainText is ");
for (int i = 0; i < mt.length; i++) {
System.out.print((char) mt[i]);
}
}
public static void main(String args[]) {
try {
generateKey();
encrypt();
decrypt();
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
github와의 연결 환경 환경 구축 (SSH 라든지) local에서 원격으로하기 위해.github의 연결을 일체 합절 잊고 있었으므로 비망록으로. 내용으로서는 SSH의 설정 방법. MacBookAir(10.14.6) homebrew install 완료 iterm2 VScode github의 계정 등록...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.