RSA简单介绍
一般来说,RSA是非对称加解密,有一对密钥,公钥进行加密,私钥进行解密。
实现过程
JAVA中相关的类及作用
具体演示程序如下
主要有三个函数,
genKeyPair
用来生成密钥,encrypt
用来加密,decrypt
用来解密。实现代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253public class AuthKeyPair {private static final String RSA = "RSA";public static void main(String... args) throws Exception {String data = "this is text for auth encode";KeyPair keyPair = genKeyPair(512);PublicKey publicKey = keyPair.getPublic();System.out.println("public key : " + stringBase64FromBytes(publicKey.getEncoded()));PrivateKey privateKey = keyPair.getPrivate();System.out.println("private key : " + stringBase64FromBytes(privateKey.getEncoded()));byte[] encryptBytes = encrypt(data.getBytes(), publicKey);System.out.println("加密后 : " + stringBase64FromBytes(encryptBytes));byte[] decryptBytes = decrypt(encryptBytes, privateKey);System.out.println("解密后 : " + new String(decryptBytes));System.out.println("原来的大小 : " + data.getBytes().length);System.out.println("加密后的大小 : " + encryptBytes.length);System.out.println("解密后的大小 : " + decryptBytes.length);System.out.println(stringBase64FromBytes(data.getBytes()).getBytes().length);}public static String stringBase64FromBytes(byte[] data) throws Exception {return new String(Base64.getEncoder().encode(data));}public static KeyPair genKeyPair(int keyLength) throws Exception {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA);keyPairGenerator.initialize(keyLength);return keyPairGenerator.genKeyPair();}public static byte[] encrypt(byte[] content, PublicKey publicKey) throws Exception {Cipher cipher = Cipher.getInstance(RSA);cipher.init(Cipher.ENCRYPT_MODE, publicKey);return cipher.doFinal(content);}public static byte[] decrypt(byte[] content, PrivateKey privateKey) throws Exception {Cipher cipher = Cipher.getInstance(RSA);cipher.init(Cipher.DECRYPT_MODE, privateKey);return cipher.doFinal(content);}}运行结果