zoukankan      html  css  js  c++  java
  • 【Java/RSA】非对称加密方法RSA加解密例程

    例程下载:https://files.cnblogs.com/files/heyang78/ufo_RSA_210930.rar

    程序:

    package ufo;
    
    import java.security.KeyFactory;
    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.interfaces.RSAPrivateKey;
    import java.security.interfaces.RSAPublicKey;
    
    import javax.crypto.Cipher;
    
    import org.apache.commons.codec.binary.Base64;
    
    public class RSA_TEST {
        public static void main(String... args) {
            String original="Let’s Build a Giant Airship 青海长云暗雪山";
            System.out.println("原文=	"+original);
            
            try {
                KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
                keyPairGen.initialize(1024);//生成大小 1024
                KeyPair keyPair = keyPairGen.generateKeyPair();
                RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();//获取公钥
                System.out.println("RSA公钥:"+Base64.encodeBase64String(publicKey.getEncoded()));
                
                KeyFactory keyFactory = KeyFactory.getInstance("RSA");
                Cipher cipherEncode  = Cipher.getInstance(keyFactory.getAlgorithm());
                cipherEncode .init(Cipher.ENCRYPT_MODE, publicKey);
                byte[] EncodeResults =cipherEncode .doFinal(original.getBytes());
                System.out.println("密文=	"+Base64.encodeBase64String(EncodeResults));
                
                RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();//获取私钥
                System.out.println("RSA私钥:"+Base64.encodeBase64String(privateKey.getEncoded()));
                
                Cipher cipherDecode = Cipher.getInstance("RSA");
                cipherDecode.init(Cipher.DECRYPT_MODE, privateKey);
                byte[] DecodeResults = cipherDecode.doFinal(EncodeResults);
                System.out.println("解密后=	"+new String(DecodeResults));
                
                
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    输出:

    原文=    Let’s Build a Giant Airship 青海长云暗雪山
    RSA公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNZc6JPRecYxLpPj/JRfs2erjQgP2HEUW6CZS76FJV+x4vk9N31qP9R2lW2pJJoPnS+8LOcAuOOctc1ov/Vc7nhqk/zWchr6qyd8kuAjzElfdRLtgqQeIHPRxXKT0HW6HZChoR7vT75lXm78mLMjI82GXxPUQ9ihnOyv/G9YSpFwIDAQAB
    密文=    KCuUnlPKfq+RcMf3VMNqP98rxtksDw4OG5Nj9w027+BZFzDmuUuCLFmAM/diWKRhxJDOOest5YFNJ4iYZFJDoqZxyK+EGpxMfSEknU/UixvAxP+r4FJf9DGFkwhVRwIty6ITnwywdZjSMmAXambcz8IQ5qr7iyuP4Xr4uCT/ktg=
    RSA私钥:MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM1lzok9F5xjEuk+P8lF+zZ6uNCA/YcRRboJlLvoUlX7Hi+T03fWo/1HaVbakkmg+dL7ws5wC445y1zWi/9VzueGqT/NZyGvqrJ3yS4CPMSV91Eu2CpB4gc9HFcpPQdbodkKGhHu9PvmVebvyYsyMjzYZfE9RD2KGc7K/8b1hKkXAgMBAAECgYB022UkQ3O5b8yEkvvrYTtJhYy8Y4baX4NSEr1iIw0lCdfkra/0UFPAd+6AkZ4E8ebwmHf+x1RruInw6ceAn6s0nH6W0zIZxkDzhY/gLe1G2D4PcUPAx8ZYU9+cozDOyIQNwJhKy2xpgO8NYdUhGjEdrPK+nlcqfSDq3upvEL9j8QJBAPe6YVEZEQ5w1zhjjEea0BGfRU/61IbIDR9qvisg44XfToo8UDgxyB78Y08vdVzQVVtS4HstMNDzq0oB3AbC90UCQQDUQZRrFDvv51Sa1yrM2DeulxO3S50jkIIgftP6fRJ7l4SMmF/nriUsNITQ4QfRcKAjY8+Q/KpY69yDHH+R9GarAkEAojuN1dVrpSBi4cvXp2EMWC4M71bd7bJ/XY7DIW11c0uNnNvo0RRQ8XHp+4ah/nl1HMyGtEQhDwY0q8/R7x+pXQJAHKWBL3Z6pGU3QPKbPyxLT4/qREm7OoqNVW9okp0Aupd3dzY1c2JIeA/agQpt8LFfm4ckA3BmWTvz9eoJuZwfowJBAOKYoBJ5FSN2XTIC4qkwacWu01ferxJ0DC6pLCqDaU1ygJL584NW1nlMnC91B99E2obT99MXfHwaS02RO3GVLHQ=
    解密后=    Let’s Build a Giant Airship 青海长云暗雪山

    END

  • 相关阅读:
    利用CWinThread实现跨线程父子MFC窗口
    GetForgroundWindow函数的不确定性——BUG笔记
    DLL动态链接库的创建
    php正则讲解 及与 js的正则比较
    cookie和session的讲解
    两种排序的方法 冒泡法 插入法 封装版
    php中获取当前时间
    文件下载及header方法介绍
    文件上传
    二分法封装版
  • 原文地址:https://www.cnblogs.com/heyang78/p/15355124.html
Copyright © 2011-2022 走看看