package com.yc.security; import java.math.BigDecimal; import com.yc.service.impl.DBHelper; public class RSATester { static String publicKey; static String privateKey; static { try { //BufferedImage bi = com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(new com.google.zxing.qrcode.QRCodeWriter().encode("123",com.google.zxing.BarcodeFormat.QR_CODE,1000,1000)); //java.awt.Image aa = com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage( // new com.google.zxing.qrcode.QRCodeWriter().encode("123456677878", // com.google.zxing.BarcodeFormat.QR_CODE, 300, 300)); //Map keyMap = RSAUtils.genKeyPair(); //publicKey = RSAUtils.getPublicKey(keyMap); // privateKey = RSAUtils.getPrivateKey(keyMap); //RSAUtils.makekeyfile(); publicKey = RSAUtils.getPublicKeyFromKeyFile(); privateKey = RSAUtils.getPrivateKeyFromKeyFile(); System.err.println("公钥: \n\r" + publicKey); System.err.println("私钥: \n\r" + privateKey); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { // Double priceDouble = null ; // BigDecimal a = new BigDecimal(123.00 * 10) ; // double amount = a.setScale(2,RoundingMode.HALF_UP).doubleValue(); // System.out.println(amount); // // //RSAUtils.makekeyfile(); // // // test2(); // //test(); // // //testSign(); // long max=999999999,min=10000000; // long randomNum = System.currentTimeMillis(); // long ran3 = (long) (randomNum%(max-min)+min); // System.out.println("随机数" + ran3); // // // String aa = "Dw2ecWG3PdcwOc" ; // byte[] encodedData = RSAUtils.encryptByPublicKey(aa.getBytes(), publicKey); //密文 // System.out.println("加密后文字:\r\n" +Base64Utils.encode( encodedData)); //// System.out.println(DBHelper.encryptHelper.decrypt("LTFQQi0zMlBCLTRQQi00N1BCLTEzUEIzMlBCODZQQi0xMjJQQi0yNFBCNTlQQi0xMDhQQjc1UEI0N1BCLTMzUEItODlQQi0xMFBCLTkxUEI0NFBCLTUyUEItNTZQQi03UEI2N1BCLTEyNFBCOTlQQjk3UEItNjBQQjExNFBCLTExNVBCNzZQQjk0UEItNDRQQi0xMTJQQi05UEItMjBQQi0xMlBCLTUzUEIxMDJQQjE3UEIxMTdQQi0xMjFQQjczUEItMTIyUEItMTdQQi04OVBCMTExUEItNDFQQi04MFBCNTFQQi0xNFBCMjNQQjEyNlBCLTE2UEIxMjBQQi02OVBCLTE3UEI5NlBCMzVQQi0xMDRQQjEyNFBCMjRQQi04OFBCLTEyMlBCMTE4UEItNDRQQjFQQjY5UEItOTZQQjMwUEItNTZQQi0yN1BCLTY2UEItODlQQi03NVBCLTU1UEIzNFBCN1BCMzFQQi0xOFBCNTZQQi02NVBCLTEyMVBCLTQwUEItMTJQQi05OVBCLTk4UEIxMTlQQjg3UEI5M1BCLTM5UEI5MlBCODBQQjEyMVBCNzNQQi0zNVBCMjlQQi0xMTBQQjBQQi0xNFBCODFQQjU4UEItNjlQQi05OFBCLTE0UEItMzZQQjEyNVBCLTIzUEItNzlQQjYzUEItNzVQQjlQQjgwUEIzN1BCNjJQQi0xMTlQQjZQQjQwUEIxOVBCNjVQQjcwUEIxMVBCODBQQjI0UEItODVQQjM1UEItMTE1UEI4MVBCMThQQjU3UEI5UEItNzRQQjIxUEItNzNQQjEyNlBCLTU0UEIxMThQQjU5UEItMTJQQi0zUEItNzBQQi0xNFBCLTE2UEIyMlBCNDlQQi05M1BCOFBCMTI3UEItMTA5UEIxMDZQQi0xMlBCMTA0UEItNDNQQjM5UEIxMTVQQi03N1BCLTg3UEIxMTRQQi03NlBCLTQ0UEItODNQQjg3UEItNjRQQjEwN1BCOFBCLTk1UEItNDBQQi0zM1BCNzFQQi05NVBCMjBQQjQwUEI1OVBCMzZQQi05MFBCLTcwUEItMzdQQi0xNFBCMTA3UEItNzBQQi0xOVBCLTM0UEItODJQQjU0UEI2MFBCODZQQjZQQjM2UEI2MFBCLTFQQi01MVBCLTc4UEItNjZQQjQ3UEIxOFBCLTUyUEItNjdQQjUxUEItNjlQQi0yMFBCMTAxUEItMjZQQi00N1BCLTEwNlBCNVBCLTYzUEItMTIwUEItNFBCNDNQQi0zMlBCMzVQQjEwNFBCLTQ4UEItMTE0UEItNTFQQjBQQi02OFBCLTkxUEItMTBQQi00NVBCMTEzUEIyNFBCLTYyUEI3N1BCMTAxUEIxMTJQQjE3UEI5M1BCMTIwUEIxMTBQQjEwMFBCLTM1UEIzNVBCLTExOFBCOTRQQi0xMDZQQjIwUEI5NFBCLTgwUEI2NVBCLTY2UEItNVBCLTEwNVBCMzRQQjdQQjY5UEI2OVBCNDZQQi0zNlBCNDZQQjQ3UEIxN1BCLTc1UEItNjJQQi0xMDVQQjExOFBCNzdQQi02MFBCMTA3UEItNjRQQjEwN1BCMTAxUEItMTExUEIxMDZQQi01M1BCMjZQQjEwNVBCMjBQQi0xMTdQQjMxUEItNTdQQi00OFBCLTIzUEItNTZQQi05MFBCLTkzUEItNTRQQi0xMDZQQi05OFBCLTU0UEI1UEItMTIxUEItMTExUEItMTJQQi0xMDFQQjM2UEItNThQQi0yNFBCOTJQQi0xMjJQQi02NFBCMjBQQi03MFBCODBQQjZQQi0zMFBCNVBCMTA2UEIzN1BCODlQQi00MVBCLTlQQi01OFBCLTEyNFBCLTc0UEI2NlBCMjhQQjY4UEIwUEI4UEItMTAxUEItNzhQQi0xMThQQi0zNA==")); byte[] data = Base64Utils.decode( "Rez4+XQaGQlopVP7rb8LSd8ichMi/2nFd+JEbTpllp8LqFwF9ctTGG08AoR8z3j9/SM2vExxRNmlKZabrc/CkDzsldfcs9vlu7oXo27dCxj6Do9DREVfvHq5EiVppmpdBbz8wcrGDaZNEtAQ9T6iKopfj/KKQgrm00mYInVGqaAa3r3X8j+98MQSbQQx28gGQAZJlJCu5T3sC0DzD+BnNqHfEEs3dVBYc+C+ZPfNx/2qVw/nnnC/rBRAkXUdp9t7t/k70T9DZ1UHI7ojksNAJXhwKH2cWLyFy14COrHwnubis9g9H4Th+FEw9Z6ZUfJekOUTwXGYwF9JGYfoc4Nx+w=="); //System.out.println("加密后文字:\r\n" + new String(data)); byte[] decodedData = RSAUtils.decryptByPrivateKey( data, privateKey); String target = new String(decodedData); System.out.println("解密后文字: \r\n" + target); // //test2(); } static void test2() throws Exception { System.err.println("公钥加密——私钥解密"); String source = "z9000027z" ; System.out.println("\r加密前文字:\r\n" + source); //明文 byte[] data = source.getBytes(); byte[] encodedData = RSAUtils.encryptByPrivateKey(data, privateKey); //密文 String target = new String(encodedData); System.out.println("\r加密后文字:\r\n" + Base64Utils.encode(encodedData)); // byte[] data = Base64Utils.decode("CcNO6oYdNgdR0qO9fw0oR2URB7uuYdIpDlgH786AVY6iq1AaHhflfDwQFV/yQQtoJewVYLWyxQKMatDK3+6nqnaXZJQPrtQt0hp28iLxrzMuN+wJUuVUQVsR7iWnHQ5bQfctbLR9SkuJTjAaMlkzMoKNCK7lP4CHhC8mIzbxyX0="); //System.out.println("\r加密前文字:\r\n" + source); // byte[] data = source.getBytes(); // byte[] decodedData = RSAUtils.decryptByPublicKey(data, publicKey); // byte[] encodedData = RSAUtils.encryptByPublicKey(data, publicKey); // String source2 = new String(decodedData); //明文 // System.out.println("解密后文字: \r\n" + source2); } static void test() throws Exception { System.err.println("公钥加密——私钥解密"); String source = "N69MhEMbvmdicu/x9iNLddmcv79l9CrAotonS2o4wqEftPuIUeomxHN5C8R3KHdK5ylS3GepsidV6TQwyq4skkXqQB04497+d3p13Pic/NsQaeKbZ7+93BOwx21UJJO1t7/RV4YC7eRbxtUBxlkRKlroWTWr41MITvEGJLsyIN4="; System.out.println("\r加密前文字:\r\n" + source); byte[] data = source.getBytes(); byte[] encodedData = RSAUtils.encryptByPublicKey(data, publicKey); System.out.println("加密后文字:\r\n" + new String(encodedData)); byte[] decodedData = RSAUtils.decryptByPrivateKey(encodedData, privateKey); String target = new String(decodedData); System.out.println("解密后文字: \r\n" + target); } static void testSign() throws Exception { System.err.println("私钥加密——公钥解密"); String source = "123456"; System.out.println("iii原文字:\r\n" + source); byte[] data = source.getBytes(); byte[] encodedData = RSAUtils.encryptByPrivateKey(data, privateKey); System.out.println("加密后:\r\n" + new String(encodedData)); System.out.println("加密 BASE64编码后:\r\n" + Base64Utils.encode(encodedData) ); // encodedData = new String( "N69MhEMbvmdicu/x9iNLddmcv79l9CrAotonS2o4wqEftPuIUeomxHN5C8R3KHdK5ylS3GepsidV6TQwyq4skkXqQB04497+d3p13Pic/NsQaeKbZ7+93BOwx21UJJO1t7/RV4YC7eRbxtUBxlkRKlroWTWr41MITvEGJLsyIN4=").getBytes(); byte[] decodedData = RSAUtils.decryptByPublicKey(encodedData, publicKey); String target = new String(decodedData); System.out.println("解密后: \r\n" + target); System.err.println("私钥签名——公钥验证签名"); String sign = RSAUtils.sign(encodedData, privateKey); System.err.println("签名:\r" + sign); boolean status = RSAUtils.verify(encodedData, publicKey, sign); System.err.println("验证结果:\r" + status); } }