rsa解密本地主方法跑和服务器跑结果不一样

本地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方法运行结果:
clipboard.png

服务器结果:
clipboard.png
文字版:乱码符号 + 正确结果

请问这是怎么回事,原因是什么?
我尝试了一下CSDN上的方法,但是好像没用.
http://bbs.csdn.net/topics/39...

阅读 4.3k
4 个回答

解密这段,换成跟加密一样的算法:

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
新手上路,请多包涵

楼主问题解决了吗 我遇到同样的问题

1楼正解啊,

新手上路,请多包涵

楼主问题解决了吗 我遇到同样的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题