【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("原文=\t"+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("密文=\t"+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("解密后=\t"+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

posted @ 2021-09-30 06:41  逆火狂飙  阅读(804)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东