浅析RSA公钥密码以及使用Java自带API实现RSA的密钥生成和加解密
RSA是目前最流行的非对称密码,目前广泛应用在数字签名,数字证书上。 那么什么是非对称密码呢?就是给明文加密的密钥和给密文解密的密钥是不一样的。其中,对外暴露的是公钥,自己保留的是私钥,如果用公钥加密,就只能用私钥解密,如果用私钥加密就只能用公钥解密。 所以实现非对称密码,需要生成公私钥对。而由于RSA的非对称密码原理是基于大素数因子的难分解性,所以每次在生成公私钥对的时候在一开始都会随机产生两个素数p,q。所以每次生成的公私钥对也是不相同的。 接下来我们就开始用Java自带的API完成RSA的公私钥对生成和加密解密操作。 在Java中,对于非对称密码操作的一个类是:KeyPairGenerator,密钥对生成器类,这个类在java.security.KeyPairGenerator包下。这个类在产生对象的时候需要往构造方法中传入一个String的值,告诉密钥对生成器生成的是哪一中密码的密钥对。 //使用RSA算法获得密钥对生成器对象keyPairGenerator KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); //设置密钥长度为1024 keyPairGenerator.initialize(1024); //生成密钥对 KeyPair keyPair =