为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

我的锅,他妈的

public static String input = "";

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信