| package com.xcong.excoin; | 
|   | 
| import cn.hutool.core.codec.Base64; | 
| import cn.hutool.core.util.CharsetUtil; | 
| import cn.hutool.core.util.HexUtil; | 
| import cn.hutool.core.util.StrUtil; | 
| import cn.hutool.crypto.SecureUtil; | 
| import cn.hutool.crypto.asymmetric.KeyType; | 
| import cn.hutool.crypto.asymmetric.RSA; | 
| import cn.hutool.crypto.asymmetric.Sign; | 
| import cn.hutool.crypto.asymmetric.SignAlgorithm; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.junit.jupiter.api.Test; | 
| import org.springframework.boot.test.context.SpringBootTest; | 
|   | 
| import java.math.BigDecimal; | 
| import java.security.KeyPair; | 
|   | 
| /** | 
|  * @author wzy | 
|  * @date 2020-05-12 | 
|  **/ | 
| @Slf4j | 
| @SpringBootTest | 
| public class RSATest { | 
|   | 
|     private String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCFU26floADA4PSEmE99u1YD30P3LAP6c7XYRASejCte+uOUfveSGHip2cgwpElu4y/r8PKAbclvs8j3y0g4MhjQbRjsiK8O2PKPaTWW+bHWPapPAhTuRHDMVFV6sajZ4dcg7mZ9+zPqG2RkvXi993v7kcTYq8hpE20/+Do7gwFowIDAQAB"; | 
|   | 
|     private String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIVTbp+WgAMDg9ISYT327VgPfQ/csA/pztdhEBJ6MK17645R+95IYeKnZyDCkSW7jL+vw8oBtyW+zyPfLSDgyGNBtGOyIrw7Y8o9pNZb5sdY9qk8CFO5EcMxUVXqxqNnh1yDuZn37M+obZGS9eL33e/uRxNiryGkTbT/4OjuDAWjAgMBAAECgYAUw8TD6C2xyndaXXB1tSKMB4WD1ew53kFPvBdDuXIhYt5yAQTIPt+37DicmpD+nnIyXI6SxKegolIilRyzNS8gQqXyqnj+UrIX8hJp0bxwEx2epcKAcwn84XFEXFGMFe2POUpFgNkxbKcWH9UNAALsO20ipP3UB6dj832HjGSagQJBAPKeVrXTnEf0Ien2A4jXAX4WZp0x7pg9ccGRo8RKFUrY0xVGstKEpCTTdDZ596/L8EN83dP2reHl2sCJpzC5NsECQQCMre6tadDg/cZE7SbxGhxlIRM1SyqGnxk+owiQbiYKLlhNR5GEZUdh+xubjtWPWhmXiy3nmFki9NESIhWf0xljAkAD/LAmGs0lrZBlHOLf+9CNdubGzIxEOjZFXRRY5HLHIRsO7XOA3CcqZ8MwJf75B5vyL/ohQpuG69UVdu2lclXBAkBq0/4Gc+9pm2y/lLNYrXJYnWg/tSfC+Pgrp5RuUSbT3mOxs6JePqaZUh2h4DJuXIZInSkr0HYH5I8LTRTMvHpvAkEAl81YqDl/deSXAq4Xy38/UrMTSEwGmHtVTxlwJ9Of+iX+pSDu/TIi3ZJtjxL+P1IcJD5r89SgJnl6secBz9rPBQ=="; | 
|   | 
|   | 
|     @Test | 
|     public void rsaTest() { | 
|         KeyPair keyPair = SecureUtil.generateKeyPair("RSA"); | 
|         log.info("{}", Base64.encode(keyPair.getPublic().getEncoded())); | 
|         log.info("{}", Base64.encode(keyPair.getPrivate().getEncoded())); | 
|     } | 
|   | 
|   | 
|     @Test | 
|     public void aaTest() { | 
|         RSA rsa = new RSA(); | 
|         String encrypt = new String(rsa.encrypt(StrUtil.bytes("1234567", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey)); | 
|         log.info("#---->{}#", encrypt); | 
|   | 
|         String decrypt = new String(rsa.decrypt(encrypt, KeyType.PrivateKey)); | 
|         log.info("#------>{}#", decrypt); | 
|     } | 
|   | 
|     @Test | 
|     public void enAndDenTest() { | 
|         RSA rsa = new RSA(); | 
|   | 
|         rsa.getPrivateKey(); | 
|         log.info(rsa.getPrivateKeyBase64()); | 
|         rsa.getPublicKey(); | 
|         log.info(rsa.getPublicKeyBase64()); | 
|   | 
|         byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey); | 
|         byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey); | 
|   | 
|         log.info("---->{}", new String(encrypt)); | 
|         log.info("------>{}", new String(decrypt)); | 
|     } | 
|   | 
|     @Test | 
|     public void decTest() { | 
|         String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCf8UFZK54AiK4PRu7tNd+Z8qZ77o/QXCnk25DRmygVpOEu5mGNSAvfnWmKp2pEV2RljeXq3Rid/+LQkonaebMJeXKSF0yxL/VgyeT8JaQ5gNbOrdfdlc+mFkXJyzyJt8YkvApEdPRNSU2ENBn7mgRfD0BYPM4vZ6/rv+de38FJwIDAQAB"; | 
|         String str = "OsaRaZOuBYGiI1j62SQvJOj4CieiAFIdWRTQln2ZSAx1KHBhyCpJuLjb84ZuwsPd98crQOlE4VhgoQB/9SD5b1ATRGmpr6FR5FqXl76JDOirdYvrplJw3hO0cZM3ADL2TQTbtGanUskOWYPG+GXRdqV21und3aZXh+itTWcSFYw="; | 
|         String privateKeys = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJ/xQVkrngCIrg9G7u0135nypnvuj9BcKeTbkNGbKBWk4S7mYY1IC9+daYqnakRXZGWN5erdGJ3/4tCSidp5swl5cpIXTLEv9WDJ5PwlpDmA1s6t192Vz6YWRcnLPIm3xiS8CkR09E1JTYQ0GfuaBF8PQFg8zi9nr+u/517fwUnAgMBAAECgYBhPt9NvpI4wbanvnndLczr2GJkxfzvSE+vwLCJF4C5FusFHVsxZINggQcg1V75bwRgCiXRMyYefreCSdrCditS43PzTOmE4RRrpxLlm8oubJc0C98LQ2qlN9AsUqL5IHpVGgbHDyWAwjc1GBID6nwXKpxq1/VodFqhahG9D5EZsQJBALnkb+5VTxQbiyQI4Uc9NIvAyVcNY1OisbvY6tvNgdBbJkADgAb78M1HWxxYjUqsvzggNHc7cWqWBHMgpnJaqm8CQQCztze4D7uAk7OC9MJHY5eE980J8Kk+GEZKxz4LahzU6V6dcb9GFac3wEtgilj/tOAn9y0/Q8sm9vvCIbMDzgzJAkEAqRYcqhF26LdVDOX25DHMBgLKISDQZFbsjA13M4/usHL4i+mjHrc0BcUOHu59NpuDI65HitzLAUSLr5zXSdUmiQJAW77wOg4GCejdXsB3IhzMsHwU97sdm26nC+vVV9xvJZ6Rx8zW+f9543NOx9U5BCmhuaVtOvvwDU9PTVcI3atmSQJAXAIJ5gGdtXx0DXiX4VvzNFHqgaqHMGvXyjNVkU2FYQbSAd2A6app4uRO+BkZu9dSjh14m+oXMnV2HzAN2rRnjA=="; | 
|   | 
|         RSA rsa = new RSA(privateKeys, null); | 
|         String aaa = new String(rsa.decrypt(str, KeyType.PrivateKey)); | 
|         log.info("---->{}", aaa); | 
|     } | 
|   | 
|     @Test | 
|     public void demoTest() { | 
|         String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIL7pbQ+5KKGYRhw7jE31hmA" | 
|                 + "f8Q60ybd+xZuRmuO5kOFBRqXGxKTQ9TfQI+aMW+0lw/kibKzaD/EKV91107xE384qOy6IcuBfaR5lv39OcoqNZ" | 
|                 + "5l+Dah5ABGnVkBP9fKOFhPgghBknTRo0/rZFGI6Q1UHXb+4atP++LNFlDymJcPAgMBAAECgYBammGb1alndta" | 
|                 + "xBmTtLLdveoBmp14p04D8mhkiC33iFKBcLUvvxGg2Vpuc+cbagyu/NZG+R/WDrlgEDUp6861M5BeFN0L9O4hz" | 
|                 + "GAEn8xyTE96f8sh4VlRmBOvVdwZqRO+ilkOM96+KL88A9RKdp8V2tna7TM6oI3LHDyf/JBoXaQJBAMcVN7fKlYP" | 
|                 + "Skzfh/yZzW2fmC0ZNg/qaW8Oa/wfDxlWjgnS0p/EKWZ8BxjR/d199L3i/KMaGdfpaWbYZLvYENqUCQQCobjsuCW" | 
|                 + "nlZhcWajjzpsSuy8/bICVEpUax1fUZ58Mq69CQXfaZemD9Ar4omzuEAAs2/uee3kt3AvCBaeq05NyjAkBme8SwB0iK" | 
|                 + "kLcaeGuJlq7CQIkjSrobIqUEf+CzVZPe+AorG+isS+Cw2w/2bHu+G0p5xSYvdH59P0+ZT0N+f9LFAkA6v3Ae56OrI" | 
|                 + "wfMhrJksfeKbIaMjNLS9b8JynIaXg9iCiyOHmgkMl5gAbPoH/ULXqSKwzBw5mJ2GW1gBlyaSfV3AkA/RJC+adIjsRGg" | 
|                 + "JOkiRjSmPpGv3FOhl9fsBPjupZBEIuoMWOC8GXK/73DHxwmfNmN7C9+sIi4RBcjEeQ5F5FHZ"; | 
|   | 
|         RSA rsa = new RSA(PRIVATE_KEY, null); | 
|   | 
|         String a = "2707F9FD4288CEF302C972058712F24A5F3EC62C5A14AD2FC59DAB93503AA0FA17113A020EE4EA35EB53F" | 
|                 + "75F36564BA1DABAA20F3B90FD39315C30E68FE8A1803B36C29029B23EB612C06ACF3A34BE815074F5EB5AA3A" | 
|                 + "C0C8832EC42DA725B4E1C38EF4EA1B85904F8B10B2D62EA782B813229F9090E6F7394E42E6F44494BB8"; | 
|   | 
|         byte[] aByte = HexUtil.decodeHex(a); | 
|         byte[] decrypt = rsa.decrypt(aByte, KeyType.PrivateKey); | 
|     } | 
|   | 
|     @Test | 
|     public void md5Test() { | 
|         String md5str = SecureUtil.md5("123456"); | 
|         log.info("{}", md5str); | 
|     } | 
|   | 
|     @Test | 
|     public void bigdecimalTest() { | 
|         BigDecimal bigDecimal = new BigDecimal("123.12345678").setScale(4, BigDecimal.ROUND_DOWN); | 
|         log.info("--->{}", bigDecimal); | 
|     } | 
| } |