/** * 解密 由于RSA一次只能加密128个字节(加密后也是128个字节),所以将密文按128个字节分割,分块解密,最后将解密后的字节流连接起来。 (non-Javadoc) * * @see com.alipay.api.security.Encrypt#decrypt(java.lang.String, java.lang.String, * java.lang.String, com.alipay.api.enums.EncryptStyleEnum) */ public String decrypt(String content, String key) throws Exception { PrivateKey prikey = KeyReader.getPrivateKeyFromPKCS8(ALGORITHM, new ByteArrayInputStream(key.getBytes())); Cipher cipher = Cipher.getInstance(CIPHER_NAME); cipher.init(Cipher.DECRYPT_MODE, prikey); InputStream ins = new ByteArrayInputStream(Base64.decodeBase64(content.getBytes())); ByteArrayOutputStream writer = new ByteArrayOutputStream(); byte[] buf = new byte[128]; int bufl; while ((bufl = ins.read(buf)) != -1) { byte[] block = null; if (buf.length == bufl) { block = buf; } else { block = new byte[bufl]; for (int i = 0; i < bufl; i++) { block[i] = buf[i]; } } writer.write(cipher.doFinal(block)); } return new String(writer.toByteArray(), "utf-8"); }