code: public static String decryptByPrivateKey(String data, String privateKey, String fillMode) throws Exception {
  		byte[] encryptedData = base64.decode(data);
  		byte[] keyBytes = base64.decode(privateKey);
  		PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
  		KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
  		Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
  		// Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
  		Cipher cipher = Cipher.getInstance(fillMode);
  
  		cipher.init(Cipher.DECRYPT_MODE, privateK);
  		int inputLen = encryptedData.length;
  		ByteArrayOutputStream out = new ByteArrayOutputStream();
  		int offSet = 0;
  		byte[] cache;
  		int i = 0;
  		// 对数据分段解密
  		while (inputLen - offSet > 0) {
  			if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
  				cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);
  			} else {
  				cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
  			}
  			out.write(cache, 0, cache.length);
  			i++;
  			offSet = i * MAX_DECRYPT_BLOCK;
  		}
  		byte[] decryptedData = out.toByteArray();
  		out.close();
  		return new String(decryptedData);
  	}
docs: 私钥解密
  
  @param data
  @param privateKey
  @param fillMode
  填充模式
  @return
  @throws Exception