이것은 현재 사용중인 코드입니다. BouncyCastle Provider를 사용합니다.RSA 공개 키를 사용하여 java.util.Properties 객체를 암호화하려면 어떻게해야합니까?
static
{
Security.addProvider(new BouncyCastleProvider());
}
protected String encrypt(byte[] keyData, byte[] data) throws Exception {
X509EncodedKeySpec keyspec = new X509EncodedKeySpec(keyData);
KeyFactory kf = KeyFactory.getInstance("RSA", "BC");
PublicKey pk = kf.generatePublic(keyspec);
Cipher rsa = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding", "BC");
rsa.init(Cipher.ENCRYPT_MODE, pk);
byte[] output = rsa.doFinal(data);
String result = base64EncodeBytes(output);
return result;
}
나는 현재 많은 데이터를 암호화 RSA를 사용하여
java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block
at org.bouncycastle.jce.provider.JCERSACipher.engineDoFinal(Unknown Source)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at Encryption.encrypt(RSAToken.java:60)
NoPadding을 사용하는 것은 안전하지 않습니다. 가능한 경우 OAEP를 사용할 수 있으면 PKCS # 1 패딩 (버전 1.5)을 사용하십시오. – erickson
OAEPWithSHA1AndMGF1Padding을 사용하도록 업데이트했습니다. 팁 고마워. 이것은 암호화에 대한 첫 벤처 기업입니다. 우리가 암호화하는 데이터 (라이센스 데이터)는 중요하지 않지만 더 많이 배울수록 좋습니다. – ScArcher2