为何我一样的代码,解密出来就是空的,谁能告诉我?

来源:3-1 RSA算法实现及应用

风满西楼

2015-09-24 23:19

public static void jdkRSA() throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{
		//1.初始化秘钥
		KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
		keyPairGenerator.initialize(512);
		KeyPair keyPair = keyPairGenerator.generateKeyPair();
		RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
		RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
		System.out.println("Public Key:" + Base64.encode(rsaPublicKey.getEncoded()));
		System.out.println("Private Key:" + Base64.encode(rsaPrivateKey.getEncoded()));
		
		//私钥加密,公钥解密-加密
		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(input.getBytes());
		System.out.println("私钥加密,公钥解密,加密:" + Base64.encode(result));
		
		//私钥加密,公钥解密-解密
		X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
		keyFactory = KeyFactory.getInstance("RSA");
		PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
		cipher = Cipher.getInstance("RSA");
		cipher.init(Cipher.DECRYPT_MODE, publicKey);
		result = cipher.doFinal(result);
		System.out.println("公钥加密,私钥解密,解密:" + new String(result));
		
		//公钥加密,私钥解密--加密
		x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
		keyFactory = KeyFactory.getInstance("RSA");
		publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
		cipher = Cipher.getInstance("RSA");
		cipher.init(Cipher.ENCRYPT_MODE, publicKey);
		result = cipher.doFinal(input.getBytes());
		System.out.println("公钥加密,私钥解密--加密:" + Base64.encode(result));
		
		//公钥加密,私钥解密--解密
		pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
		keyFactory = KeyFactory.getInstance("RSA");
		privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
		cipher = Cipher.getInstance("RSA");
		cipher.init(Cipher.DECRYPT_MODE, privateKey);
		result = cipher.doFinal(result);
		System.out.println("公钥加密,私钥解密--解密:" + new String(result));
	}


写回答 关注

1回答

  • 风满西楼
    2015-09-24 23:41:17

    我的锅,他妈的

    public static String input = "";

    输入为空串,调了一个小时,电脑都快砸烂,这要把手剁了

JAVA实现非对称加密

非对称加密算法在JAVA中的实现,了解非对称加密算法应用场景

27470 学习 · 36 问题

查看课程

相似问题