| | |
| | | package com.whyc.util; |
| | | |
| | | import com.whyc.constant.YamlProperties; |
| | | import org.apache.commons.codec.binary.Base64; |
| | | |
| | | import javax.crypto.Cipher; |
| | |
| | | /** |
| | | * 固定公私钥 |
| | | */ |
| | | private static final String publicKeyOld = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPpJ3j+SHQ69lqq+ShV7deA40Y+8rYra6rr4ReOJ+UE7ek8tsJJrcy1xMO1SophJdHXXwSNbZWhnJW9GlIq1Um6IplkwFc/AtyoeJDP3EJtUZgI5H6fSz0BPLFHn18C0Nxz1Br109U07DqQdMsarcBmKXYQw+2oZOz0KpA5b0FawIDAQAB"; |
| | | private static final String privateKeyOld = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kneP5IdDr2Wqr5KFXt14DjRj7ytitrquvhF44n5QTt6Ty2wkmtzLXEw7VKimEl0ddfBI1tlaGclb0aUirVSboimWTAVz8C3Kh4kM/cQm1RmAjkfp9LPQE8sUefXwLQ3HPUGvXT1TTsOpB0yxqtwGYpdhDD7ahk7PQqkDlvQVrAgMBAAECgYA8ASdX4W2n6a4kKnRSleLqqg8aHazqAPvTinmAJqU65VW02SJ42yxyV3gFnTSErXfIfxviO3/U+0ruWiFVEwV5oDEh0dOd+HHGm4YzFXIRglMeRBgLuVJ+owzoVDwZstiIBa69DIjaJtmpSf5FjwxAth+gtCv3e11IXHraKN720QJBAMPMB1WtmpRGYHxWVYjKSL+RGw+h3gMQLk3exZjhmYRlXuqfVZ2Zol+NazDc59K5f+geMdJ0/X2kKnKLVjWzYHMCQQC7z1cFYswtLemxGfj+dwlVC01VL4pKa7HGHl/FAQ2UNYZY2d5hE/nXYbTpfI0gMowX926/aFpia7NbAUJO7WEpAkAyUFa+LJthaOhYazMVsK2bFKW4kabkcJ8Fga6TR73UaNxIPGOa2SUBmuylpM6ptuNoeYHiDBAr3ijOQIIJ0KuDAkBy9fPahCNe9F+73J4hhVPdDtIDdto7u7hSAX215XMeabUW5iXNXqDsSg6nbWolb0t50CemWoYZALwE1Lx1+7AhAkEAoZtFt+2skjAxHEqNUye4vKBqB2Ng/wmfitCfT34lXWQsxs4BGk/8eQMzkam9bcB7FcinolxHF/1UjsUYpI+AgA=="; |
| | | private static final String publicKeyOld = YamlProperties.publicKeyOld; |
| | | private static final String privateKeyOld = YamlProperties.privateKeyOld; |
| | | |
| | | private static final String publicKey = "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu7CdCMIoWXUX584JpmE1bTE1r1MtmZGswsSbsm4s9zqETQ4BmUT2kz/wvvGsI8T3ZvTT4KIyKP4Ez+yNVejMM5XwR95KF4e3UwMc724buWKl4pVL09kvkCZt8ZKf359VAvhyHHz80wIiVmJs6xbho7OBsv/s7Hwho0n4HPL4u/eNR5vWa2rtgQG1+fi1XP0UiSRKKW15Va9R2CI3zB+sffquhyX5fi+06NibWzk7OPU+EGvAwkaJtrmfLAvpwr4+G0MBLIsPVFV17Sgpoj62rtfbhHwmLSo1JTw+/JskDQOjxXfw+w3uHAZgPTlEmn2Ya9ssIljqCBfvM9nbGUWcnmppKlPm6kECa4RsgPiRgPFV+nT/Q98kfUTb798Sy63x4NIZkLQn1DDbmcAgUqLR6y1r0fD8Ne3vVtuZlVR/8ZlcRAfb+th2cNN0rytrnUreJo7kPtTFdkNtmj0KdUkRO8ea0YymEQal+b0tCl3V8osSy+qO2OVRd7yCvpOWEYOBAgMBAAE="; |
| | | private static final String privateKey = "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"; |
| | | private static final String publicKey = YamlProperties.publicKey; |
| | | private static final String privateKey = YamlProperties.privateKey; |
| | | /** |
| | | * RSA最大加密明文大小 |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * RSA解密 |
| | | * |
| | | * @param data 待解密数据 |
| | | * @return |
| | | */ |
| | | public static String decrypt(String data) { |
| | | try { |
| | | Cipher cipher = Cipher.getInstance("RSA"); |
| | | cipher.init(Cipher.DECRYPT_MODE, getPrivateKey()); |
| | | byte[] dataBytes = Base64.decodeBase64(data); |
| | | int inputLen = dataBytes.length; |
| | | ByteArrayOutputStream out = new ByteArrayOutputStream(); |
| | | int offset = 0; |
| | | byte[] cache; |
| | | int i = 0; |
| | | // 对数据分段解密 |
| | | while (inputLen - offset > 0) { |
| | | if (inputLen - offset > MAX_DECRYPT_BLOCK) { |
| | | cache = cipher.doFinal(dataBytes, offset, MAX_DECRYPT_BLOCK); |
| | | } else { |
| | | cache = cipher.doFinal(dataBytes, offset, inputLen - offset); |
| | | } |
| | | out.write(cache, 0, cache.length); |
| | | i++; |
| | | offset = i * MAX_DECRYPT_BLOCK; |
| | | } |
| | | byte[] decryptedData = out.toByteArray(); |
| | | out.close(); |
| | | // 解密后的内容 |
| | | return new String(decryptedData, "UTF-8"); |
| | | }catch (Exception e){ |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 前端加密数据RSA[明文+MD5(明文)]解密为明文和MD5[明文] |
| | | * @param frontEncryptData |
| | | * @return |
| | |
| | | * 先URL解码,再进行密文解析[rsa(明文+md5)] |
| | | */ |
| | | public static String[] decryptFrontP(String frontEncryptData,String separatorStr){ |
| | | try { |
| | | /*try { |
| | | frontEncryptData = URLDecoder.decode(frontEncryptData, "utf-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | }*/ |
| | | String[] dataArr = new String[2]; |
| | | String dataMD5Mix = RSAUtil.decrypt(frontEncryptData, RSAUtil.getPrivateKey()); |
| | | int index = dataMD5Mix.lastIndexOf(separatorStr); |
| | |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | try { |
| | | //String word = "fg001@hdw"; |
| | | //String encryptWord = encrypt(word, getPublicKey()); |
| | | //System.out.println(encryptWord); |
| | | String word = "9Lu6HgEvttjj8vYhy3ID+PqPbumuXhcH"; |
| | | String encryptWord = encrypt(word, getPublicKey()); |
| | | System.out.println(encryptWord); |
| | | |
| | | String encryptWord = "X9rYw0Za1T7vgFO9cEMghH8f+Uo1Dhc3jAnMPpaKnCXL8nJ5xqueQ7Pldp0GmOr3imulIqxIQjdwZ43trz6s9YDi9lpEDNGVHQAx6hazHQmSnQ04HrPRn6xn9hvYo6BaJQYf+Jw5SmYwRgBWHbIA6atl/czRcDnXV9p7TCtcE8YsrgFYyT07D7/AmjPl1taiJmYnrojmqrQbOY/WE7nvHftjRkJoQcywYOfLY4zy4VOwhD6//Kpzo6klsLTuZgWMP1Wr4BzNB41EyjN68lzRiPhTQN0E8MuXwNSUS2sOODr96r6m9Z15Gg0iuzs60pz3HNXXoreRDjb5qZODprnEau0i94A9vuGaDS+Lr0QFV95ZAnCQ0t0j11QgxnuiBL0UIBNLYexCyTn3T5+cPDPMBC9bsMkCLzWvrapIFcGqrboxzx9g6KUh9jH24Eeckwndqqz5S+I0GeZbEZEAjHqgNSCPMDX0L8+CBvm6atT5kXpy1gls5YDsEDds0bTl9baf"; |
| | | /* String encryptWord = "X9rYw0Za1T7vgFO9cEMghH8f+Uo1Dhc3jAnMPpaKnCXL8nJ5xqueQ7Pldp0GmOr3imulIqxIQjdwZ43trz6s9YDi9lpEDNGVHQAx6hazHQmSnQ04HrPRn6xn9hvYo6BaJQYf+Jw5SmYwRgBWHbIA6atl/czRcDnXV9p7TCtcE8YsrgFYyT07D7/AmjPl1taiJmYnrojmqrQbOY/WE7nvHftjRkJoQcywYOfLY4zy4VOwhD6//Kpzo6klsLTuZgWMP1Wr4BzNB41EyjN68lzRiPhTQN0E8MuXwNSUS2sOODr96r6m9Z15Gg0iuzs60pz3HNXXoreRDjb5qZODprnEau0i94A9vuGaDS+Lr0QFV95ZAnCQ0t0j11QgxnuiBL0UIBNLYexCyTn3T5+cPDPMBC9bsMkCLzWvrapIFcGqrboxzx9g6KUh9jH24Eeckwndqqz5S+I0GeZbEZEAjHqgNSCPMDX0L8+CBvm6atT5kXpy1gls5YDsEDds0bTl9baf"; |
| | | String originWord = decrypt(encryptWord, getPrivateKey()); |
| | | System.out.println("解密后的字符串:"+originWord); |
| | | System.out.println("解密后的字符串:"+originWord);*/ |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |