package helper; import com.yanzuoguang.util.helper.RsaHelper; import com.yanzuoguang.util.thread.ThreadHelper; import org.junit.Assert; import org.junit.Test; import java.security.PublicKey; public class TestRsa { @Test public void test() throws Exception { RsaHelper.generatorKeyPair(); } @Test public void testRsa() { RsaHelper.RsaInfo rsaInfo = RsaHelper.generatorRsa(); testRsaPublicEncode(rsaInfo); testRsaPrivateEncode(rsaInfo); } @Test public void rsa() { String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3GdrIdT2lOblSalXgw4Bjnv7f2ybH+iv39QLUO4j1PeN0vacswQgmUq3KHLbxWeBqNTdsuR/G5zKv4e3raEYsAxrlHw/AJCJQOKTpYEPKLiVhNj7mqg1+I66BRwaG9AunN4bF6LfTj2wgFElVbFGbv1v8SEVDRYiUkwVsAo5JqQIDAQAB"; String privateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALcZ2sh1PaU5uVJqVeDDgGOe/t/bJsf6K/f1AtQ7iPU943S9pyzBCCZSrcoctvFZ4Go1N2y5H8bnMq/h7etoRiwDGuUfD8AkIlA4pOlgQ8ouJWE2PuaqDX4jroFHBob0C6c3hsXot9OPbCAUSVVsUZu/W/xIRUNFiJSTBWwCjkmpAgMBAAECgYBwJ18SsHWtEhmI+OdXgIjQ/J/j4Kn1jjCGdkZgV4NBrMH5TP3sdOSYDMa06TfJyCKlC6nCZ/al8BHlF/+S1VE9Mu8DRrbHAO4OJQyOEaQ64mePL6jYkhVbjr4q7kHTbsIWVu3sH9TJRa3n+lsEpEv90ri458+ofn++h+rlYKlLfQJBAPVWi1VanQlyAtGKmeA7GrxH+XYiqeq4J1suT1qUTsRwEM4RLUZcrsdGio2bVwbbyX3TB2vYdLvf1otdndKBr0MCQQC/Due/BN+B/hqOgMdW2RoHfycg/HVOp7CpsBikRUMegDQGPb6N+z/BIXkVBNHBADzaTcJh0DgSsoMRhlEdTWajAkEAq2V31/yDAytEbtGOqMmB5xG9ZNvYq2NWE2xqAdTkpnXIN75mS+bKL+vHNiDVDrSTsrSwVZaWDv7U6u5PKNZy8wJBAI/K/Af79uuy/vG5Yk2u37Q8sopU90TXWFKdwi4AIt/VxVHdLolVS0pjkumK0wLa1vHGDEHpoAoSaCrMWEghdNkCQQCUFZxSRZB8XiLtlNyT5s6UX89Ov3eZO1KmFWiXgXuZ3STr/8sDhyC9TN8uq8vK4lQiihlZQFw89LwogtJLAExc"; RsaHelper.RsaInfo rsaInfo = new RsaHelper.RsaInfo(publicKey, privateKey); testRsaPublicEncode(rsaInfo); testRsaPrivateEncode(rsaInfo); } @Test public void testAccount() { String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP6PNloM90hUD4exz88EKbqPeGhxiQgyMfTNOuMqcQuKp+j7/5jkJ3CuJDGmZfgg9JTGlJ7r/SbSGA6TPFuVdD3vrHyHPxrURTeaKptI6qxCht9LltJtoTnE7mSEhNiGCjA6cZk8fi8SuFghGDO7I3zqYeSsdQK0qAWqwXZwTeRwIDAQAB"; String accountInfo = "F1t4CswQFSfhoTuNUoiO/jOfbuqZTvV8r0U3LxNA7OTb8UY0+Yt9a/R/sWgko4/lrM4ISWHvkZJEuU+szJ6J8vS2hrAZShZ6GER45DcArDVkjTnNeLQvL+eB3uVGUS3hwjG0rWRZjyMsSJJoFmSp8RR3l1bSmcSw2dRoGEpOboo="; PublicKey key = RsaHelper.getPublicKey(publicKey); String s = RsaHelper.decryptionByPublicKey(accountInfo, key); System.out.println(s); } @Test public void testPublicDecode() { String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaBW3Zwh0oCIOGBHTxn+WrhUzGHb+ZLRXkpU4y6mw7w4tiznYRRPn2BCLs9QqKVIPIx9Z7MPdodqh3uN06aizk7FXx0GSk/F3fP9KvwS/QH+rmYpCR9lxAt3BkJq3sDHkPgkOdFy7lQwFvG7ECN2Tzxa9Usw47rlmBwLyaZxBrYQIDAQAB"; String accountInfo = "O28odVeYktCOGlm5dI8lnTcjIDsHdJgDctVomXcWXZM4g6m+mObcTzyerU064NCEIrADPLDF+unm2Ts6I/empwQJIwhlRMo4q6k8eVnuax3GZhkSjadrGXCtli/r0G5l4RcguJAOWcw6GFNeKHfv5hbt6B9swxCRuDpCGeOp50AdwP0b9CQN4+uH/mOCDD5W85t9gaDWL96H6fLR8QQO66TXCs/C7KNzRuJjhIebbi/TLaoTsptFHST0FIXTZLhEj5XhgMYNqujxoMbC53Kb4PhBGDYdoVXgtnRjiRcFByZKZ6DMcN3fll+4R6OxMNDUKTJ9TqM0AlTyx01SMea89Q=="; PublicKey key = RsaHelper.getPublicKey(publicKey); String s = RsaHelper.decryptionByPublicKey(accountInfo, key); System.out.println(s); } private void testRsaPublicEncode(RsaHelper.RsaInfo rsaInfo) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 50; i++) { sb.append((char) ('A' + i % 26)); } String from = sb.toString(); String temp = RsaHelper.encryptionByPublicKey(from, rsaInfo.getPublicKey()); String result = RsaHelper.decryptionByPrivateKey(temp, rsaInfo.getPrivateKey()); System.out.println("原字段:" + from); System.out.println("公钥加密后字段:" + temp); System.out.println("私钥解密后字段:" + result); Assert.assertEquals(from, result); String rsaTemp = RsaHelper.encodeRsaValueInfo(from, rsaInfo.getPublicKeyFrom()); String rsaResult = RsaHelper.decodeRsaValueInfo(rsaTemp, rsaInfo.getPrivateKeyFrom(), 0); System.out.println("Json时间公钥加密后字段:" + rsaTemp); System.out.println("Json时间私钥解密后字段:" + rsaResult); Assert.assertEquals(from, rsaResult); ThreadHelper.sleep(2000); boolean isOk = false; try { String rsaResult1 = RsaHelper.decodeRsaValueInfo(rsaTemp, rsaInfo.getPrivateKeyFrom(), 1); isOk = true; } catch (Exception ex) { System.err.println(ex.getMessage()); } Assert.assertFalse(isOk); } private void testRsaPrivateEncode(RsaHelper.RsaInfo rsaInfo) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 50; i++) { sb.append((char) ('A' + i % 26)); } String from = sb.toString(); String temp = RsaHelper.encryptionByPrivateKey(from, rsaInfo.getPrivateKey()); String result = RsaHelper.decryptionByPublicKey(temp, rsaInfo.getPublicKey()); System.out.println("原字段:" + from); System.out.println("公钥加密后字段:" + temp); System.out.println("私钥解密后字段:" + result); Assert.assertEquals(from, result); String rsaTemp = RsaHelper.encodeRsaValueInfo(from, rsaInfo.getPrivateKeyFrom()); String rsaResult = RsaHelper.decodeRsaValueInfo(rsaTemp, rsaInfo.getPublicKeyFrom(), 0); System.out.println("Json时间公钥加密后字段:" + rsaTemp); System.out.println("Json时间私钥解密后字段:" + rsaResult); Assert.assertEquals(from, rsaResult); ThreadHelper.sleep(2000); boolean isOk = false; try { RsaHelper.decodeRsaValueInfo(rsaTemp, rsaInfo.getPublicKeyFrom(), 1); isOk = true; } catch (Exception ex) { System.err.println(ex.getMessage()); } Assert.assertFalse(isOk); } }