我想在安卓设备上使用Java编写代码,以确定性的方式生成RSA密钥对。我的要求是不能存储密钥对,必须在运行时生成,并且与之前/未来的运行结果相同。
我的思路是确定性地种子化随机数生成器,并将该生成器传递给密钥生成函数。我的代码如下:
SecureRandom random=SecureRandom.getInstance("SHA1PRNG");
random.setSeed(1234); //something device specific will be used to set this
KeyPairGenerator keyGen=KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024, random);
KeyPair pair=keyGen.generateKeyPair();
PublicKey pub=pair.getPublic();
PrivateKey priv=pair.getPrivate();
每次运行生成的密钥都不同。但是,SecureRandom随机数在不同的运行中以及跨设备之间保持相同。
我错过了什么?如何可重复地生成这些密钥?
谢谢