public static String pempublicEncrypt(String str,String public_key){
try {
RSAEncrypt rsaEncrypt = new RSAEncrypt();
rsaEncrypt.loadPublicKey(public_key);
byte[] PrivateMessage=encryptByPublicKey(str.getBytes("UTF-8"),rsaEncrypt.getPublicKey());
sun.misc.BASE64Encoder ea = new sun.misc.BASE64Encoder();
String Public =ea.encode(PrivateMessage);
return Public;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
public static byte[] encryptByPublicKey(byte[] data, PublicKey publicKey)
throws Exception {
// 对公钥解密
// byte[] keyBytes = decryptBASE64(key);
// 取得公钥
// X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
// Key publicKey = keyFactory.generatePublic(x509KeySpec);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
// 对数据加密
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] code = new byte[(((data.length - 1) / 117 + 1)) * 128];
int ixplain = 0;
int ixcode = 0;
while ((data.length - ixplain) > 117) {//截117字节做一次加密
ixcode += cipher.doFinal(data, ixplain, 117, code, ixcode);
ixplain += 117;
}
cipher.doFinal(data, ixplain, data.length - ixplain, code, ixcode);
return code;
}
**如有更好的建议 , 请与我联系
本人邮箱 : kevinddw@126.com**