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));
}
2015-09-24
我的鍋,他媽的
public static String input = "";
輸入為空串,調了一個小時,電腦都快砸爛,這要把手剁了