RSA实现加密算法

来源:互联网 发布:java完整项目案例 编辑:程序博客网 时间:2024/05/17 22:50

1.新建一个java项目,里面新建一个java类,将要用的jar包加入到项目里面,整体的框架如下所示:



2.RSA.java里面的代码如下所示:

import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import javax.crypto.Cipher;import org.apache.commons.codec.binary.Base64;public class RSA {private static String src = "mu rong fei fei 636";public static void jdkRSA() {try {// 1.初始化密钥KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");// JDK8要用1024,不能用512keyPairGenerator.initialize(1024);KeyPair keyPair = keyPairGenerator.generateKeyPair();RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();System.out.println("Public Key:"+ Base64.encodeBase64String(rsaPublicKey.getEncoded()));System.out.println("Private Key:"+ Base64.encodeBase64String(rsaPrivateKey.getEncoded()));System.out.println();// 2.私钥加密、公钥解密——加密PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());KeyFactory keyFactory = KeyFactory.getInstance("RSA");PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, privateKey);byte[] result = cipher.doFinal(src.getBytes());System.out.println("私钥加密、公钥解密——加密:"+ Base64.encodeBase64String(result));// 3.私钥加密,公钥解密——解密X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);cipher.init(Cipher.DECRYPT_MODE, publicKey);result = cipher.doFinal(result);System.out.println("私钥加密,公钥解密——解密:" + new String(result));System.out.println();// 4.公钥加密,私钥解密——加密x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());publicKey = keyFactory.generatePublic(x509EncodedKeySpec);cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, publicKey);result = cipher.doFinal(src.getBytes());System.out.println("公钥加密,私钥解密——加密:"+ Base64.encodeBase64String(result));// 5.公钥加密,私钥解密——解密pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, privateKey);result = cipher.doFinal(result);System.out.println("公钥加密,私钥解密——解密:" + new String(result));} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {jdkRSA();}}



3.运行之后得到的结果:


原创粉丝点击