2 Java部分
2.1 RSA加密
2.1.1 返回字符串
/// <summary>
/// RSA字符串加密(加密最大长度为117字节)
/// </summary>
/// <param name="data">待加密字符串</param>
/// <param name="keyFile">公钥文件路径</param>
/// <returns>加密后的字节数组base64后的字符串</returns>
public static String RSAEncryptStr(String data, String keyFile) {
try {
KeyFactory fact = KeyFactory.getInstance("RSA");
// 读取公钥
readKeyFromFile(keyFile);
byte[] modulusBytes = Base64.decode(module);
byte[] exponentBytes = Base64.decode(exponentString);
BigInteger modulus = new BigInteger(1, modulusBytes);
BigInteger exponent = new BigInteger(1, exponentBytes);
RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent);
PublicKey pubKey = fact.generatePublic(rsaPubKey);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] byteCipherData = cipher.doFinal(data.getBytes());
String strEncrypt = Base64.encode(byteCipherData);
return strEncrypt;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2.1.2 返回字节数组
/// <summary>
/// RSA字符串加密(加密最大长度为117字节)
/// </summary>
/// <param name="data">待加密字符串</param>
/// <param name="keyFile">公钥文件路径</param>
/// <returns>加密后的字节数组</returns>
public static byte[] RSAEncrypt(String data, String keyFile) {
try {
KeyFactory fact = KeyFactory.getInstance("RSA");
// 读取公钥
readKeyFromFile(keyFile);
byte[] modulusBytes = Base64.decode(module);
byte[] exponentBytes = Base64.decode(exponentString);
BigInteger modulus = new BigInteger(1, modulusBytes);
BigInteger exponent = new BigInteger(1, exponentBytes);
RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent);
PublicKey pubKey = fact.generatePublic(rsaPubKey);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] byteCipherData = cipher.doFinal(data.getBytes());
return byteCipherData;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}