21 const char letters[28] =
"qwertzuiopasdfghjklyxcvbnm";
22 const char capitalLetters[28] =
"QWERTZUIOPASDFGHJKLYXCVBNM";
23 const char numbers[11] =
"1234567890";
24 const char symbols[24] =
"!\"$%&/()=?'#*+~-_><.:,;";
31 void generateRandomCharacterSequence(
char *result,
unsigned int length, std::function<
int ()> randomizer,
int highestRandomNumber,
bool useSmallLetters,
bool useCapitalLetters,
bool useNumbers,
bool useSymbols,
bool useAtLeastOneOfEachCategory)
36 signed char categoryCount = 0;
37 bool needSmallLetter =
false;
38 bool needCapitalLetter =
false;
39 bool needNumber =
false;
40 bool needSymbol =
false;
42 needSmallLetter = useAtLeastOneOfEachCategory;
45 if(useCapitalLetters) {
46 needCapitalLetter = useAtLeastOneOfEachCategory;
50 needNumber = useAtLeastOneOfEachCategory;
54 needSymbol = useAtLeastOneOfEachCategory;
57 signed char neededCharacters = useAtLeastOneOfEachCategory ? categoryCount : 0;
62 for(
char *i = result, *end = result + length; i < end; ++i) {
64 if((neededCharacters > 0 && (randomizer() < (highestRandomNumber / 2.0))) || ((end - i) >= neededCharacters)) {
67 if(needCapitalLetter && ((category == -1) || (randomizer() < (highestRandomNumber / 2.0))))
69 if(needNumber && ((category == -1) || (randomizer() < (highestRandomNumber / 4.0))))
71 if(needSymbol && ((category == -1) || (randomizer() < (highestRandomNumber / 8.0))))
76 if(useCapitalLetters && ((category == -1) || (randomizer() < (highestRandomNumber / 2.0))))
78 if(useNumbers && ((category == -1) || (randomizer() < (highestRandomNumber / 4.0))))
80 if(useSymbols && ((category == -1) || (randomizer() < (highestRandomNumber / 8.0))))
85 *i = letters[rand() % 26];
87 needSmallLetter =
false;
92 *i = capitalLetters[rand() % 26];
93 if(needCapitalLetter) {
94 needCapitalLetter =
false;
99 *i = numbers[rand() % 9];
106 *i = symbols[rand() % 22];
120 void generateRandomCharacterSequence(
char *result,
unsigned int length,
bool useSmallLetters,
bool useCapitalLetters,
bool useNumbers,
bool useSymbols,
bool useAtLeastOneOfEachCategory)
122 generateRandomCharacterSequence(result, length, rand, RAND_MAX, useSmallLetters, useCapitalLetters, useNumbers, useSymbols, useAtLeastOneOfEachCategory);
CPP_UTILITIES_EXPORT void generateRandomCharacterSequence(char *result, unsigned int length, bool useSmallLetters=true, bool useCapitalLetters=true, bool useNumbers=true, bool useSymbols=true, bool useAtLeastOneOfEachCategory=true)
Generates a random character sequence using std::rand().
Contains utility functions for generating random character sequences.