Java中使用RSA算法加密
概述
RSA加密算法是一种非对称加密算法
RSA加密的方式
使用公钥加密的数据,利用私钥进行解密
使用私钥加密的数据,利用公钥进行解密
RSA是一对密钥。分别是公钥和私钥,这个公钥和私钥其实就是一组数字!其二进制位长度可以是1024位或者2048位.长度越长其加密强度越大,目前为止公之于众的能破解的最大长度为768位密钥,只要高于768位,相对就比较安全.
RSA加密的缺点
由于RSA算法的原理都是大数计算,使得RSA最快的情况也比对称加密算法慢上好几倍。
public class RSAUtils {
public static String RSA_ALGORITHM = "RSA";
public static String UTF8 = "UTF-8";
/**
* 密钥长度,DSA算法的默认密钥长度是1024
* 密钥长度必须是64的倍数,在512到65536位之间
* */
private static final int KEY_SIZE=1024;
public static void main(String[] args) throws Exception {
String password = "1234abcd5678";
KeyStore keys = createKeys();
byte[] publicKey = getPublicKey(keys);
byte[] privateKey = getPrivateKey(keys);
System.out.println("公钥:"+Base64.encode(publicKey));
System.out.println("私钥:"+ Base64.encode(privateKey));
byte[] encryptByPublicKey = encryptByPublicKey(password.getBytes(), publicKey);
System.out.println("使用公钥加密后的数据:"+Base64.encode(encryptByPublicK