主要用于数字签名:
1.存储密钥对
首先使用KeyPairGeneration产生密钥对:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair keyPair = keyGen.genKeyPair();
privateKey = keyPair.getPrivate();
publicKey = keyPair.getPublic();
将密钥存储为文件的方法:
FileOutputStream fs = new FileOutputStream(fileName);
fs.write(privateKey.getEncoded());
fs.close();
2.加载密钥对
假设公钥文件为public.dat、private.dat
首先读取公钥文件:
//read public key
FileInputStream fsPublicKey = new FileInputStream(publicKeyFile);
BufferedInputStream bfsPublicKey = new BufferedInputStream(fsPublicKey);
byte[] bytePublicKey = new byte[bfsPublicKey.available()];
bfsPublicKey.read(bytePublicKey);
bfsPublicKey.close();
使用KeyFactory产生公钥
//build public key
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(
byteEncodedPublicKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
主意,私钥的的处理和公钥相同,唯一不同的是私钥的KeySpec不同。私钥应使用PKCS8EncodedKeySpec