我现在想知道的是setSeed这个方法是不是可以用指定的 key 来生成指定的 random ?

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

湖上湖
浏览 127回答 1
1回答

翻翻过去那场雪

public static void main(String[] args)throws Exception {      SecureRandom secureRandom1 = SecureRandom.getInstance("SHA1PRNG");       SecureRandom secureRandom2 = SecureRandom.getInstance("SHA1PRNG");       System.out.println(secureRandom2.equals(secureRandom1));      byte[] seed={12,11,123};      secureRandom1.setSeed(seed);      secureRandom2.setSeed(seed);      System.out.println(secureRandom1.nextInt());      System.out.println(secureRandom2.nextInt());  }  每次都新生成一个SecureRandom 对象,而SecureRandom 没有覆盖equals方法 所以它用超类Ojbect的equals方法 public boolean equals(Object obj) {  urn (this == obj);  }  所以 System.out.println(secureRandom2.equals(secureRandom1)); 的结果是false 但是两个对象的内部结构是一样的,所以它们设置相同的seed,执行相同方法的结果是一样的。
打开App,查看更多内容
随时随地看视频慕课网APP