一开始想着把私钥和公钥分别分开存放,后来又说要把公钥私钥一起保存,工程中删了如下代码,自己保存记录下
public boolean genKeypair()
{
try
{
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
KeyPair keypair = keyPairGen.genKeyPair();
rsaPrivateKey = (RSAPrivateKey) keypair.getPrivate();
rsaPublicKey = (RSAPublicKey) keypair.getPublic();
FileOutputStream fos = new FileOutputStream(new File(Environment
.getExternalStorageDirectory().getPath() + "/RsaPublic.key"));
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(rsaPublicKey);
fos.flush();
fos.close();
FileOutputStream fosPrivate = new FileOutputStream(new File(
Environment.getExternalStorageDirectory().getPath()
+ "/RsaPrivate.key"));
ObjectOutputStream oosPrivate = new ObjectOutputStream(fosPrivate);
oosPrivate.writeObject(rsaPrivateKey);
fosPrivate.flush();
fosPrivate.close();
}
catch (NoSuchAlgorithmException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
return false;
}
catch (IOException e)
{
// TODO: handle exception
e.printStackTrace();
return false;
}
return true;
}
public RSAPublicKey loadPublicKey()
{
RSAPublicKey publicKey = null;
try
{
FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory().getPath()+"/RsaPublic.xml");
ObjectInputStream ois = new ObjectInputStream(fis);
publicKey = (RSAPublicKey) ois.readObject();
ois.close();
}
catch (IOException e)
{
// TODO: handle exception
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
// TODO: handle exception
}
return publicKey;
}
public RSAPrivateKey loadPrivateKey()
{
RSAPrivateKey privateKey = null;
try
{
FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory().getPath()+"/RsaPrivate.xml");
ObjectInputStream ois = new ObjectInputStream(fis);
privateKey = (RSAPrivateKey) ois.readObject();
ois.close();
}
catch (IOException e)
{
// TODO: handle exception
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
// TODO: handle exception
}
Log.e("Private key is ",
Change.bytesToHexString(privateKey.getEncoded()));
return privateKey;
}