2016-08-14 89 views
2
CryptoApiRandomGenerator randomGenerator = new CryptoApiRandomGenerator(); 
SecureRandom secureRandom = new SecureRandom(randomGenerator); 

private void m () { 
    KeyGenerationParameters keyGenerationParameters = new KeyGenerationParameters(secureRandom, a); 

    RsaKeyPairGenerator keyPairGenerator = new RsaKeyPairGenerator(); 
    keyPairGenerator.Init(keyGenerationParameters); 
    a_method(keyPairGenerator.GenerateKeyPair()); 
} 

为什么下面的代码生成时调用了两次相同的密钥,但是当程序重新启动它生成不同的密钥?同一运行上生成相同的运行不同的密钥 - RsaKeyPairGenerator C#BouncyCastle的

实施例(相同实例,但不同的时间称为米()):

公共密钥A:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhSUzd + 38BxgCossYWUouldfKC + lKZuM2uymuz1ERebhQVYHtwBQT0T2yb07ksZgX5BeWThl3nzdNLdEOEztPj6lDxMb + jamrmInJE94t5xGIrN3dZSIKiVdfe4iztBLTMKH8V9s8rJIMGWAbr7ytBsGC1dOTluMnINhxpXGZIXQIDAQAB

公钥乙:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhSUzd + 38BxgCossYWUouldfKC + lKZuM2uymuz1ERebhQVYHtwBQT0T2yb07ksZgX5BeWThl3nzdNLdEOEztPj6lDxMb + jamrmInJE94t5xGIrN3dZSIKiVdfe4iztBLTMKH8V9s8rJIMGWAbr7ytBsGC1dOTluMnINhxpXGZIXQIDAQAB

+0

这两个公钥是相等的。我不确定你想问什么。 –

+0

对不起,它不清楚,但这些键是在程序的同一个实例上生成的,但预计会不同,它们是相同的,为什么? – Keddy1201

+1

“SecureRandom”类的实现在哪里? –

回答

0

仅根据您的代码段的随机数是一个全球性的。这意味着它在启动时初始化,然后保持不变。所以你每次都会向密钥生成器提供相同的随机数。快速修复是将函数m()上方的两行移动到函数中。

+0

SecureRandom生成一个数字,它不是一个数字。 – Keddy1201

相关问题