我正在尝试在 Android 上使用 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 数字在每次运行时都是相同的,甚至在不同设备之间也是相同的。
我错过了什么?我怎样才能重复生成这些密钥?
谢谢