![]() ![]() Length is the number of 64 bit words to join. Index % 2 ? curr.toString(36).toUpperCase() : curr.toString(36) Or we could make a fancy generic generator which uses Array.reduce to concatenate multiple random 64 bit words, alternating between uppercasing each stanza: (new BigUint64Array(length)).reduce( ![]() We could do this either by just repeating the process twice: let strings = (new BigUint64Array(2)) Ĭonsole.log(strings.toString(36) + strings.toString(36).toUpperCase()) However, to make it more secure we also want it to be longer and with mixed upper and lower cases. It should give you a truly random string roughly 10-13 characters long. Here we are generating 1 word with 64 bits of random data, and cast it to a base36 string (0-9 and a-z). The idea is the same, we're just utilizing window.crypto instead. However, for reference (and everyone else), I'll show a solution based on an actual CSPRNG. Since you only want passwords 8 characters long, I assume you're not interested in this in any case. Though, please be aware that Math.random() was never designed or meant to be cryptographically secure. ![]() Though, you could solve this by simply concatenating two strings, and then slice it back down to 8 characters again. If you are running in an old pre-2016 chrome or pre-2017 safari browser, this might mean (in worst case scenario) you get a shorter password than 8 characters. However, please be aware that different browsers and javascript implementations used to give different bit depth results for Math.random(). The idea is to cast a random number (in the range 0.1) to a base36 string (lowercase a-z plus 0-9), and then fetch the first 8 characters after the leading zero and decimal point. Real Quick-n-dirty™ Math.random().toString(36).slice(2, 10) ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |