我试图在Android上使用Java确定性地生成RSA密钥对。我的要求是,我不能存储密钥对,并且它必须在运行时生成,与之前/未来的运行相同。确定性生成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数字是相同的,甚至在不同设备上相同。
我错过了什么?我怎样才能重复生成这些密钥?
谢谢
你为什么要这样做?当然,如果你不想存储RSA密钥对,那么你也不想存储用来生成RSA对的随机种子?奇怪的是,这段代码并没有按照你想要的那样做,但对我来说,似乎你可能会这样做,而没有想到它通过 – 2012-04-16 06:00:09