/** * Returns a cryptographically generated id. * * @return id */ public static final long generateId() { long id = 0; // add new seed material from current time random.addSeedMaterial(ThreadLocalRandom.current().nextLong()); // get a new id byte[] bytes = new byte[16]; // get random bytes random.nextBytes(bytes); for (int i = 0; i < bytes.length; i++) { id += ((long) bytes[i] & 0xffL) << (8 * i); } //System.out.println("Id: " + id); return id; }
/** * create a new RandomSource using the passed digest * * @param digest the algorithm to base the RandomSource on */ public BCDigestRandomSource(Digest digest) { this.digest = digest; this.drng = new DigestRandomGenerator(digest); }
private void generateState() { digestAddCounter(stateCounter++); digestUpdate(state); digestUpdate(seed); digestDoFinal(state); if ((stateCounter % CYCLE_COUNT) == 0) { cycleSeed(); } }
private void cycleSeed() { digestUpdate(seed); digestAddCounter(seedCounter++); digestDoFinal(seed); }
public void addSeedMaterial(byte[] inSeed) { synchronized (this) { digestUpdate(inSeed); digestUpdate(seed); digestDoFinal(seed); } }
DigestRandomGenerator sr0 = new DigestRandomGenerator(new SHA1Digest()); sr0.addSeedMaterial(r); sr0.nextBytes(c1);
/** * fill an (byte) array with random data * * @param toBeFilled the array to be filled */ @Override public void fillBytes(byte[] toBeFilled) { this.drng.nextBytes(toBeFilled); }
public void nextBytes(byte[] bytes, int start, int len) { synchronized (this) { int stateOff = 0; generateState(); int end = start + len; for (int i = start; i != end; i++) { if (stateOff == state.length) { generateState(); stateOff = 0; } bytes[i] = state[stateOff++]; } } }
DigestRandomGenerator sr0 = new DigestRandomGenerator(new SHA1Digest()); sr0.addSeedMaterial(r); sr0.nextBytes(c1);
public void addSeedMaterial(long rSeed) { synchronized (this) { digestAddCounter(rSeed); digestUpdate(seed); digestDoFinal(seed); } }
public void addSeedMaterial(byte[] inSeed) { synchronized (this) { digestUpdate(inSeed); digestUpdate(seed); digestDoFinal(seed); } }
public void nextBytes(byte[] bytes) { nextBytes(bytes, 0, bytes.length); }
public void nextBytes(byte[] bytes, int start, int len) { synchronized (this) { int stateOff = 0; generateState(); int end = start + len; for (int i = start; i != end; i++) { if (stateOff == state.length) { generateState(); stateOff = 0; } bytes[i] = state[stateOff++]; } } }
DigestRandomGenerator sr0 = new DigestRandomGenerator(new SHA1Digest()); sr0.addSeedMaterial(rBytes); sr0.nextBytes(c2);
private void cycleSeed() { digestUpdate(seed); digestAddCounter(seedCounter++); digestDoFinal(seed); }
private void generateState() { digestAddCounter(stateCounter++); digestUpdate(state); digestUpdate(seed); digestDoFinal(state); if ((stateCounter % CYCLE_COUNT) == 0) { cycleSeed(); } }
public void nextBytes(byte[] bytes) { nextBytes(bytes, 0, bytes.length); }
/** * create a new RandomSource using default params (SHA1-based) */ public BCDigestRandomSource() { this.digest = new SHA1Digest(); this.drng = new DigestRandomGenerator(digest); }
DigestRandomGenerator sr0 = new DigestRandomGenerator(new SHA1Digest()); sr0.addSeedMaterial(rPrimeBytes); sr0.nextBytes(c2);
public void addSeedMaterial(long rSeed) { synchronized (this) { digestAddCounter(rSeed); digestUpdate(seed); digestDoFinal(seed); } }