public class RSA { public static void main(String[] args) throws Exception { KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); generator.initialize(1024); KeyPair keyPair = generator.generateKeyPair(); RSAPrivateCrtKey privateCrtKey = (RSAPrivateCrtKey) keyPair.getPrivate(); RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); System.out.println("私钥模:"+privateCrtKey.getModulus()); System.out.println("私钥指数:"+privateCrtKey.getPrivateExponent()); System.out.println("公钥模: "+publicKey.getModulus()); System.out.println("公钥指数:"+publicKey.getPublicExponent()); String str = "1232131"; String en = Encrypt(publicKey.getModulus(),publicKey.getPublicExponent(),str); System.out.println(en); String de = Decrypt(privateCrtKey.getModulus(),privateCrtKey.getPrivateExponent(),en); System.out.println(de); } //加密 public static String Encrypt(BigInteger publicModules,BigInteger publicExponent,String str) throws Exception { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(publicModules,publicExponent); PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE,publicKey); byte[] encryptData = cipher.doFinal(str.getBytes()); return Base64.getEncoder().encodeToString(encryptData); //base64加密 } //解密 public static String Decrypt(BigInteger privateModules,BigInteger privateExponent,String str) throws Exception { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(privateModules,privateExponent); PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE,privateKey); byte[] encryptData = Base64.getDecoder().decode(str); //base64解密 byte[] decryptData = cipher.doFinal(encryptData); return new String(decryptData); }
Java的RSA加解密算法通过公私钥的模,指数实现
最新推荐文章于 2025-03-03 00:15:00 发布