When completing the initial crypto course, I try to deal with the Java SecureRandom object. I think I understand that:
a) No matter how much you know the sequence of random numbers, there is no way to predict the next random number in the sequence.
b) No matter how long a sequence of random numbers you know, there is no way to know which seed was used to start them, other than assuming brute force.
c) You can request safe random numbers of various sizes.
d) You can sow a newly created SRNG with different values of different sizes. Each newly created SRNG that you create and sow with the same value will produce the same sequence of random numbers.
I should add that I assume this code is used on Windows:
Random sr = SecureRandom.getInstance("SHA1PRNG", "SUN");
Do I understand my basic understanding correctly? Thanks in advance.
I have some additional questions for those reasonably versed in cryptography. They relate to sowing SRNG, and not to allow themselves seeds at first use.
e) What difference, if any, does this for random numbers generated if you run SRNG with a long integer as opposed to an array of 8 bytes?
f) If I seed an SRNG with, say, 256 bytes, is there another seed that can produce the same sequence of random numbers?
g) Is there any optimal seed size? It seems to me that this may be a pointless question.
h) , SRNG, , 256 , , XOR , ? ? , , 256- ?
SecureRandom, , , .
, , . , , Java SecureRandom .