Java에서 비대칭 암호화로 키 쌍을 생성하려고하는데 invalid key exception
오류가 발생하고 No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl
이 표시됩니다.자바에서 비대칭 암호화로 키 쌍을 생성하는 방법은 무엇입니까?
private static byte[] encrypt(byte[] inpBytes, PrivateKey prvk,
String xform) throws Exception {
Cipher cipher = Cipher.getInstance(xform);
cipher.init(Cipher.ENCRYPT_MODE, prvk);
return cipher.doFinal(inpBytes);
}
@Override
public byte[] uploadFile(byte[] data, String name, String file, int size)
throws RemoteException {
// TODO Auto-generated method stub
byte[] keyss=null;
try {
OutputStream out =
new FileOutputStream(new File("C:\\Users\\Amaresh\\Documents\\Cloud\\"
+ name + "\\" + file));
String xform = "DES/CTR/NoPadding";
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); // Original
kpg.initialize(1024); // 512 is the keysize.//try 1024 biit
KeyPair kp = kpg.genKeyPair();
PublicKey pubk = kp.getPublic();
PrivateKey prvk = kp.getPrivate();
keyss = pubk.getEncoded();
byte[] encBytes = encrypt(data, prvk, xform);
System.out.println("Keypair generated");
out.write(encBytes, 0, encBytes.length);
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return keyss;
}
난 그냥 내가 개인 키를 사용하여 데이터를 암호화하고 해독하는 공개 키를 저장하는 곳 비대칭 암호화를 수행합니다. 나는 초보자이며 내 실수로 인해 유감입니다.
잘 모르겠지만 무제한 키 강도 정책을 설치해야 할 수도 있습니다. http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html . 이 코드는 공용/개인 키 생성뿐만 아니라 한 번에 파일을 암호화한다는 점에 유의하십시오. 그런 다음 암호화 된 파일 당 개인/공개 키 쌍이 생길 것입니다. 나는 이것이 당신이 정말로 원하는 것이라고 상상할 수 없습니다. – Gimby