Im trying to write a simple key generator for XOR cipher. All chars in the key must be unique, no 2 same symbols. So far i tried this:
void genKey (int Size) {
srand(time(NULL));
char Alphabet [63] = "1234567890qwertyuiooasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm";
int aLenght = strlen(Alphabet);
int kSize = Size;
char Key [kSize];
bool isInArray = false;
for (int i = 0 ; i< kSize; i++)
{
int Pos = rand () % aLenght;
char randomTemp = Alphabet[Pos];
for (int j = 0; j < kSize; j++){
if (Key[j] == randomTemp)
{isInArray = true;}
else
{isInArray = false;}
if (isInArray == false){Key[i] = randomTemp;}
}
}
string sKey(Key);
currentKey= sKey;
}
But it keeps generate keys with re-appearing symbols. Please help.
shullfethe data and then taking the first N elements that you need.genKeyrepeatedly? It will only generate a different key whentime(NULL)returns a different value (i.e. once per second), you should only callsrandonce at the beginning of your program or ideally use modern random number generationsrandorrand.Alphabet?