Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've devised a PRG using Bezier curves , constructed with Bernstein polynomials, and I was wondering if you guys could help me with some suggestions or constructive criticism.

Basicly I take a random set of 2d points(seed), used as control points for a number of concataned Bezier curves, this makes up my space. The generated space of the curves is alot greater than the set of initial points. When I wish to generate binary output I go through the space, and because of the formula using Bernstein polynomials, each point of the curve is generated with a number of decimals, from wich I extract the raw binary and concatenate a result. It would seem that the binary of the decimals behind the x,y of each point don't give away any indication of the curve.

I keep an index to know how far along the space I've traveled so I don't use the same data again. The original points that will generate the space are random.

I've tested the output with sts. from NIST and it passed everything, but I was told that is hardly enough for a viable PRG. Then I got redirected to stackexchange :)

Any thoughts?

ps: do you guys know any other tests for a prg?

share|improve this question
Without a meticulously precise description of a PRG, one can't conclude that it is secure. Such description is not given, thus the question can't be answered; and it would probably be off-topic anyway. $\;$ Keep in mind that any experimental randomness test not tailored to the PRG tested can only invalidate the hypothesis that it is secure, NOT validate that hypothesis. An analogy: that's similar to a Fermat primality test, which can often invalidate that an integer is prime, but can never tell 1436697831295441 is not prime. – fgrieu Jul 22 '14 at 16:20
Yes, you are right I haven't had the time to formalize the description, I focused on the implementation. I hoped someone would've told me something like "here, pass these tests and you are good to go" – Cristian Leontin Glavan Jul 22 '14 at 17:50
We can tell you the exact opposite: there is not (and can't be) a test, using a PRG as a black box, that can give a useful indication that a PRG is secure; much less a proof. The best a test does is tell that a PRG is not secure. Existing tests of CSPRNGs are designed to catch faulty implementations, or badly misguided (more often than not, both). – fgrieu Jul 22 '14 at 18:07
up vote 3 down vote accepted

PRNGs are a difficult and hot topic.

Some tests can be found here: What tests can I do to ensure my PRNG is working correctly?

But they do not tell you (or others) if your PRNG is really secure. A PRNG must be build in a way, that a third party is not able to "calculate" former or upcoming PRNG output based on some random data from the PRNG.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.