我现在使用的是这样的加密和解密方式
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
            secureRandom.setSeed(privateKey.getBytes()); 
                kgen.init(128, secureRandom);
程序没什么问题
可有一个疑问是
在加密的时候调用 
和解密的时候调用 
两次生成的secureRandom是否会不一致 (因为是随机数 )
问题不是很难
有人能解答么?

解决方案 »

  1.   

    SecureRandom 实现尝试完全随机化生成器本身的内部状态,除非调用方在调用 getInstance 方法之后又调用了 setSeed 方法:  SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(seed);  
    在调用方从 getInstance 调用中获得 SecureRandom 对象之后,它可以调用 nextBytes 来生成随机字节:  byte bytes[] = new byte[20]; random.nextBytes(bytes); 
    调用方还可以调用 generateSeed 方法来生成给定的种子字节数(例如,为其他随机数量生成器提供种子):  byte seed[] = random.generateSeed(20); 
    这个是我自己调查到的 
    我现在想知道的是setSeed 这个方法是不是可以用指定的key 来生成 指定的random 
      

  2.   

    楼主是想产生KEYPAIR吧,只要种子一定,产生的PUBLICKEY和PRIVAEKEY就一定。更换种子后才会产生不同的值。