[Java] 纯文本查看 复制代码public class Encrypt_RAS {
private static final int MAX_DECRYPT_BLOCK = 128;
private static final int MAX_ENCRYPT_BLOCK = 117;
private static Encrypt_RAS instance;
private String privateKey;
private String publicKey;
private Encrypt_RAS() {
super();
this.init();
}
public String decryptByPrivateKeyNew(String data) throws Exception {
byte[] v4 = Base64.decode(URLDecoder.decode(data, "UTF-8").getBytes("utf-8"), 0);
PrivateKey v12 = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(Base64
.decode(this.privateKey, 0)));
Cipher v2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
v2.init(2, ((Key)v12));
int v6 = v4.length;
ByteArrayOutputStream v10 = new ByteArrayOutputStream();
int v9 = 0;
int v5 = 0;
while(v6 - v9 > 0) {
byte[] v1 = v6 - v9 > 128 ? v2.doFinal(v4, v9, 128) : v2.doFinal(v4, v9, v6 - v9);
v10.write(v1, 0, v1.length);
++v5;
v9 = v5 * 128;
}
byte[] v3 = v10.toByteArray();
v10.close();
return URLDecoder.decode(new String(v3), "UTF-8");
}
public String encryptByPublicKeyNew(String encryptData) throws Exception {
byte[] v4 = encryptData.getBytes("utf-8");
PublicKey v12 = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decode(
this.publicKey, 0)));
Cipher v3 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
v3.init(1, ((Key)v12));
int v7 = v4.length;
ByteArrayOutputStream v11 = new ByteArrayOutputStream();
int v10 = 0;
int v6 = 0;
while(v7 - v10 > 0) {
byte[] v2 = v7 - v10 > 117 ? v3.doFinal(v4, v10, 117) : v3.doFinal(v4, v10, v7 - v10);
v11.write(v2, 0, v2.length);
++v6;
v10 = v6 * 117;
}
byte[] v5 = v11.toByteArray();
v11.close();
return URLEncoder.encode(Base64.encodeToString(v5, 0), "UTF-8");
}
public static Encrypt_RAS getInstance() {
if(Encrypt_RAS.instance == null) {
Encrypt_RAS.instance = new Encrypt_RAS();
}
return Encrypt_RAS.instance;
}
private void init() {
if(TextUtils.isEmpty(this.publicKey)) {
this.publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4Z2JiaDphN8Tc+veAEEjSsoT7QAxo/2PENyIrKIpFCQ+/RLULzlJ4U+AK3KzEgDVdQgWvJMq6mhKNRvzkDH4fBEwiGzaiKGc8rg7sI5nEhectPixeL4C198p5d+DlnKzs77XNTHEmGQMco+9vHpnQAwvNTygkEjrW9N/UNWyA1wIDAQAB";
}
if(TextUtils.isEmpty(this.privateKey)) {
this.privateKey = "MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAMbuFbfe3lgZy+Npz3TNKuzX0M9XubHaRDEqiUaX/jy2TEgI/BVo1ka7R/53EDwE1Hqa9Zn8ocQOtNjnQn8rVjTU2eLlmXah5ezZ0h6OFKr06HhO4/Qp+5EKuMpdvwNNm5qR1i3HbyAiP2EqBAIzlUgXrKH9xW/SbUNc+tfgGWT1AgMBAAECgYEAhV2e39uh0wzQXVFVzSezjH+PtUJJ80uyhgfPaq2Bu/A3qd+kKTJU3ay3MoleL+7JCL2UxLzTMt7tLbG1Kg7Cxo/yWUC7+51wvRY7KTxKp8DbEpPAcl9gZfR0lsghbHZqDr2EpgsbDbXlVKIgnhG1xs1oq2o8LC+OljUvZd729QECQQDnYAtHWTQ0m8GGjK0Nx39YzCkODDhjSaVmpmQX2rKr47TFOgd5JCCLFkYDkRsRQQ9zm86DyBX8WufiOI79oU21AkEA3BoNk76SFyvwKzNoVVrSVrHDY3szpXHBwT943HumT8tc+LzfuwbpJCOP289CCaGZr7dNdJLJg8j3wohIBSxCQQJBAJTYBGlxyVPOn0CfXvRuUk4diIuw8NVumyjeAaYW2roZUkFOg2A7DXRsb737qx3+bKJCqSe9n+cn0+SD3fjru8ECQQCcnuFob+RvHrIBW8xzaHRigo5B/QpsQT2ZsPvlEQvwngqjaWtfH/TI5ZFZ3erlBZxiIHK6cDV7VIeRYv60x6DBAkEAk5KwZCSgVcL5evw5QhzbVRwwqGtXDHTpcTkz1M77QImDFYSJ6TMZOlO4EA3j8wIJCDW7kh+3c2J/HlG6C6MJTA==";
}
}
}