Javascript CS-PRNG - 64-bit random

Posted by Jack on Stack Overflow See other posts from Stack Overflow or by Jack
Published on 2010-06-08T15:14:10Z Indexed on 2010/06/08 15:22 UTC
Read the original article Hit count: 262

Filed under:
|
|

Hi,

I need to generate a cryptographically secure 64-bit unsigned random integer in Javascript. The first problem is that Javascript only allows 64-bit signed integers, so 9223372036854775808 is the biggest supported integer without going into floating point use I think? To fix this I can use a big number library, no problem.

My Method:

var randNum = SHA256( randBigInt(128, 0) ) % 2^64;

Where SHA256() is a secure hash function and randBigInt() is defined below as a non-crypto PRNG, im giving it a 128bit seed so brute force shouldn't be a problem.

randBigInt(n,s) //return an n-bit random BigInt (n>=1).  If s=1, then the most significant of those n bits is set to 1.

Is this a secure method to generate a cryptographically secure 64-bit random int? And importantly does taking the 2^64 mod guarantee 100% I have a 64-bit number?

An abstract example, say this number is prime (it isn't i know), I will use it in the Galois Field [2^p], where p must be 64bits so that every possible 1-63bit number is a field element. In this query, my random int must be larger than any 63-bit number. And Im not sure im correct in taking the 2^64 mod of a 256bit hash output.

Thanks (hope that makes sense)

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about security