이것은 this answered question과 중복 될 수 있지만 동일한 결과를 얻지 못하는 것 같습니다. 여기에 몇 가지 안내를 원합니다.RSA는 JSEncrypt를 사용하여 암호화하고 BouncyCastle (Java)을 사용하여 해독합니다.
JSEncrypt (클라이언트)
let encrypt = new Encrypt.JSEncrypt();
encrypt.setPublicKey(this.publicKey); // retrieved from server
encrypt.encrypt(password);
BouncyCastle (서버) - RSA 키 생성
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(1024);
KeyPair pair = generator.generateKeyPair();
PublicKey pubKey = pair.getPublic();
PrivateKey privKey = pair.getPrivate();
// returned to client
String publicKeyStr = new String(Base64.encodeBase64(pubKey.getEncoded()));
String privateKeyStr = new String(Base64.encodeBase64(privKey.getEncoded()));
BouncyCastle (서버) - 암호 해독
Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
// org.apache.commons.codec.binary.Hex
byte[] cipherText = cipher.doFinal(Hex.decodeHex(encrypted.toCharArray()));
decrypted = new String(cipherText, BaseConstant.ENC_UTF8);
오류
org.apache.commons.codec.DecoderException : 인덱스 0에 올 Y 르지 않은 16 진 문자 I at org.apache.commons.codec.binary.Hex.toDigit (Hex.java:178) at org.apache.commons.codec 응답 한 256
서버 측에서 암호화를 생산하면서 .binary.Hex.decodeHex (Hex.java:89는) 내가 눈치
한 가지, 172 JSEncrypt에 의해 암호화 된 텍스트의 길이 RSA/None/PKCS1Padding을 사용하도록 언급 된 질문. 이미 설정 했었습니다. 그 밖의 무엇을 내가 놓칠 수 있습니까?
예외는 암호 해독 관련이 없습니다. 고맙지 만, @Hugo가 제공 한 솔루션은 – Egl
감사합니다. 이 작품! – acys