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); 
 | 
    } 
 | 
} 
 |