zoukankan      html  css  js  c++  java
  • RSA加密解密

    package com.center.bytedance.controller;
    
    
    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.asymmetric.KeyType;
    import cn.hutool.crypto.asymmetric.RSA;
    
    /**
     * 采用hutool工具实现rsa加密解密
     */
    public class RSAUtil {

         
    public static void main(String[] args) throws Exception { //公钥私钥使用蚂蚁金服秘钥工具生辰 String publicKeyBase64 = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21BHFmJTYgQNgJmhynkRgyMEWbGH6JP2YAkIVr80fAavHZgKWzfPXHF1MPFiMIZy7vpIOORvVJ99oOkvh6Cr6a6+0oRUqQtZBTcAvXfMsWxICOyUMjZoadS2+x6Z19af+lE11Y+zGs9w5pxKA796lww0aQqotKH3cVEDw5R7mzqmwWYmbvQORPRvbsb+cfrwiTh6nibr0r3OqjtAx8e/IsnWDXIKGcToPbHXcnTS+bORwZ21vzEMFWQguvITQday8xTsXe2x9u6bMmEIE3QT8x4Q//achMyBKEf2qaJIKxPiL6fCTC+V96rzBGd55TYOmGWJhH3ABqCMJGh4Yb20aQIDAQAB"; String privateKeyBase64 = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDbUEcWYlNiBA2AmaHKeRGDIwRZsYfok/ZgCQhWvzR8Bq8dmApbN89ccXUw8WIwhnLu+kg45G9Un32g6S+HoKvprr7ShFSpC1kFNwC9d8yxbEgI7JQyNmhp1Lb7HpnX1p/6UTXVj7Maz3DmnEoDv3qXDDRpCqi0ofdxUQPDlHubOqbBZiZu9A5E9G9uxv5x+vCJOHqeJuvSvc6qO0DHx78iydYNcgoZxOg9sddydNL5s5HBnbW/MQwVZCC68hNB1rLzFOxd7bH27psyYQgTdBPzHhD/9pyEzIEoR/apokgrE+Ivp8JML5X3qvMEZ3nlNg6YZYmEfcAGoIwkaHhhvbRpAgMBAAECggEAGYovvRuWOkPejqtVfA69S1g4mXljKmKQvn5OyktaAVeF7RxXmGfXbhyIWTrDBIOjvtDGuFlh3aj1KFf/gPvlCUGgV0Ox2D3KECFnpKje3YqOmPt0BqTvY+Oxq2zU3Z3Q44Wxjz08zlJ6A2EP/X++9vgk4larbt2twzR8C7qu6lSjAXIlUuHlTdO/itcaVc7nMBkNBPP97B9Zk48P6Mmz+3+TZNP0z53wGYdhddO993QcWL7KDLvFCQX4zdRnPH4FeT9M96AYnYeey9Liej5GfjUP61tzWrGVjGteihMq4FfzPlOgTr5zIZCVidTrRFs9hG8FL1ON9TYSw6y5llYQQQKBgQDzhw3loKV9HA16eCRVzTCguA/ntw0Mtv4qGygdf6yp6yfgl0c9OlyR5TWv02qfK/iJWwepM2gYYl7mQQTz6sIVPUSHazA+Ez+1FLaJIUUq4a57Fg4nDHFsjhE3QxLEMSNGSuN6wU8EidLtEZxu5fZjhxGqxvd9CDnevzhgV3AHvwKBgQDmi7+bVmImXkRtw/a+wGNeV1KIPGaFekwQVeVnLXxU6J7Gnz7fAA2lhmOincq+94XF9Pi0rfASITV4EV2oKlvt+DQCgIYqcVxfSrD+PMHwKbxlD6GoyTrfACdaUhv2LEswWHX4CID5i8YTBCcupN3toL1GYGJlDDhBMa7YEl2N1wKBgEYNP24ie/g1LZthG/Kih65zw/9/pH1X1lz+WtfBdkWao2nzmkZ+l0pQiNT/F9iZqXC5gsalRvhcs7fAVFBl41aAvUnHB6WTm+vW/XsM2vyu1qYJfiC1b5sucr1Wyfstt1vtBuq02KoRi18uhbVQ6UNQA0EA4whQaXUtxGXSQSO5AoGAS225mNcgcbEx7j/JQQus9zbWt+AbItyqekXAMou9PAKHwDBl34wi6t8XRiMeLHDLgcLuhB7MhwH6fnggDl8diLRGP/NQ8h34vOyxD91NDoh5LQ96MsDz0/Y26eQnZdmEGCM5JZeSqxLCEYKwVyB1w8NtadMrHihrV1kr/WG03i0CgYAWKc5vTOWd2uoBdI+aTiZ3QivQBfV0Yi+Xl0muhCN0HoJk/FW1ICn1fX0LN6WWKnC2BSOXbcUasAQtwSYLm2lTCP/G7tNYh3q4CoNoqqKVg8N9F7s/89CHT8yK7UZaGweQwcJF6vkhJtNX5VEJx33rL43y3UN64mGcxqzqsAtlfw=="; System.out.println("公钥:" + publicKeyBase64); System.out.println("私钥:" + privateKeyBase64); String str = "黄河远上白云间,一片孤城万仞山。羌笛何须怨杨柳,春风不度玉门关。"; System.out.println("原始报文:" + str); String encode = encode(publicKeyBase64, str); System.out.println("公钥加密后:" + encode); String decode = decode(privateKeyBase64, encode); System.out.println("私钥解密后:" + decode); } /** * 公钥加密 * * @param publicKey * @param val * @return */ public static String encode(String publicKey, String val) { //hutool的Rsa工具 RSA rsa = new RSA(null, publicKey); //字符串转字节数组 byte[] bytes = StrUtil.bytes(val, CharsetUtil.CHARSET_UTF_8); //加密 byte[] encrypt = rsa.encrypt(bytes, KeyType.PublicKey); //字节转16进制 String str = HexUtil.encodeHexStr(encrypt); //16进制转base64 String encode = Base64.encode(str); return encode; } /** * 私钥解密 * * @param privateKey * @param val * @return */ public static String decode(String privateKey, String val) { RSA rsa = new RSA(privateKey, null); //base转解码,解码后是16进制 String base64Str = Base64.decodeStr(val); //16进制转字节数组 byte[] bytes = HexUtil.decodeHex(base64Str); //私钥解密 byte[] decrypt = rsa.decrypt(bytes, KeyType.PrivateKey); //字节数组转字符串 String str = StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8); return str; } }
  • 相关阅读:
    linux下解除端口占用
    设计模式(二)观察者模式
    设计模式(一) 策略模式
    loj #6235. 区间素数个数
    loj #2013. 「SCOI2016」幸运数字
    loj #6014. 「网络流 24 题」最长 k 可重区间集
    loj #6013. 「网络流 24 题」负载平衡
    loj #2255. 「SNOI2017」炸弹
    loj #2051. 「HNOI2016」序列
    loj #6122. 「网络流 24 题」航空路线问题
  • 原文地址:https://www.cnblogs.com/songfahzun/p/14660969.html
Copyright © 2011-2022 走看看