本地main方法调用和服务器调用RSA解密方法结果不一样
main方法结果正确
服务器运行,结果前多了一串乱码
public static String decryptByPrivateKey(String key) throws Exception {
convent();//读取私钥用的
byte[] keyBytes = Base64Util.decode(PRIVATE_KEY);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return new String(cipher.doFinal(Base64Util.decode(key)), "UTF-8");
}
public static String encryptByPublicKey(String key) throws Exception {
byte[] keyBytes = Base64Util.decode(PUBLIC_KEY);
X509EncodedKeySpec pkcs8KeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
Key publicKey = keyFactory.generatePublic(pkcs8KeySpec);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return Base64Util.encode(cipher.doFinal(key.getBytes()));
}
main方法运行结果:
服务器结果:
文字版:乱码符号 + 正确结果
请问这是怎么回事,原因是什么?
我尝试了一下CSDN上的方法,但是好像没用.
http://bbs.csdn.net/topics/39...
解密这段,换成跟加密一样的算法: