Password Generator - C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
/*
Conditions:
-length = 8 characters.
-can include numbers, characters and (& # _ @).
-always start from a lower case letter.
-have atleast 2 lower case, 2 upper case & 1 number & a special character.
-no space is allowed.
*/
int random_number(int low,int up){
int x= rand() % (up - low + 1) + low;
return x;
}
char random_lwrchar(void){
char lwrletters[]="abcdefghijklmnopqrstuvwxyz";
return lwrletters[random_number(0,25)];
}
char random_uprchar(void){
char uprletters[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return uprletters[random_number(0,25)];
}
char random_char(void){
char uprletters[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char lwrletters[]="abcdefghijklmnopqrstuvwxyz";
int i = random_number(1,2);
if(i == 1){
return lwrletters[random_number(0,25)];
}
else if(i == 2){
return uprletters[random_number(0,25)];
}
}
char random_schar(){
char specialletters[]="#@_&";
return specialletters[random_number(0,3)];
}
void generate_password(){
int i = random_number(1,2);
printf("%c",random_char()); //1st character
if(i == 1){
printf("%c",random_uprchar()); //2nd character
}
else if(i == 2){
printf("%c",random_lwrchar());
}
int j = random_number(1,2);
if(j == 1 && i == 2 || j == 2 && i == 2){
printf("%c",random_uprchar()); //3rd character
}
else if(j == 1 && i == 1 || j == 2 && i == 1){
printf("%c",random_lwrchar());
}
printf("%c",random_lwrchar()); //4th character
printf("%c",random_uprchar()); //5th character
printf("%c",random_schar()); //6th character
printf("%d",random_number(2,5)); //7th character
printf("%d\n",random_number(2,5)); //8th character
}
int main(){
srand(time(NULL));
//Driver code
printf("Generated random password = ");
generate_password();
return 0;
}
NOTE : srand() is called inside main() just to make a small time gap between the function calls otherwise same random number will be generated.
ReplyDelete