【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