#include<stdio.h>
#include<string.h>
#include<time.h>
void Generisi(int duzina,char* set); //za -s, priprema sve i poziva Sifra
void SGenerisi(int snaga); //za -r, priprema sve i poziva Sifra
int SlucajanBroj(int min,int max); //random broj izmedju min i max ukljucujuci i min i max
void Sifra (int duz,char* slova); //Generisi i SGenerisi pozivaju, pravi i ispisuje sifru
char sifra[80];
int main(int argc, char **argv)
{
if(argc < 2 || argc >4)
{
printf("Pomoc: rpsx -h\n");
exit(0);
}
else if(argc == 2 && strcmp(argv[1],"-h")==0)
{
printf("\n\t- [ Uputstvo ]\n");
printf("\nrpsx -[opcija {h,r,s}] [vrednost {i,n}] [opcija {t}]\n");
printf("\t-h Pomoc\n");
printf("\t-r Slucajna sifra | potrebna vrednost [i]\n");
printf("\t-s Podesavanja | potrebne vrednosti [n] i [t]\n");
printf("\n* Vrednost [i] slozenost sifre i={1,2,3,4}\n");
printf("\t1 - veoma slaba sifra, 5-8 karaktera | mala slova\n");
printf("\t2 - slaba sifra, 7-11 karaktera | slova i brojevi\n");
printf("\t3 - jaka sifra, 10-18 karaktera | slova, brojevi i spec. znakovi\n");
printf("\t4 - veoma jaka sifra, 20-50 karaktera | slova, brojevi i spec. znakovi\n");
printf("\n* Vrednost [n] duzina sifre n={3-80}\n");
printf("\n* Opcija [t] set karaktera za sifru t={sve,a1,1!,a!}\n");
printf("\tsve - svi karakteri\n");
printf("\ta1 - slova i brojevi\n");
printf("\t1! - brojevi i spec. znaci\n");
printf("\ta! - slov i spec. znaci\n");
printf("\n\t- [ Primeri ]\n");
printf("\n rspx -r 2");
printf("\n rspx -s 15 -sve");
printf("\n rspx -s 20 -a!\n");
}
else if(argc == 3 && strcmp(argv[1],"-r")==0)
{
int snaga = atoi(argv[2]); //atoi konvertuje string u int
if(snaga > 0 && snaga < 5)
{
SGenerisi(snaga);
}
else
printf("\nVrednost i mora biti 1,2,3 ili 4\n");
}
else if(argc == 4 && strcmp(argv[1],"-s")==0)
{
int duzina = atoi(argv[2]);
if(duzina > 2 && duzina < 81)
{
Generisi(duzina,argv[3]);
}
else
printf("\nVrednost n mora biti od 3 do 80\n");
}
else
{
printf("Pomoc: rpsx -h\n");
exit(0);
}
return 0;
}
void Generisi(int duzina,char* set)
{
char *karakSet;
if(strcmp(set,"-sve")==0)
{
karakSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123465789!@#$%^&*()_+{}:>?<~;[].,";
Sifra(duzina,karakSet);
}
else if(strcmp(set,"-a1")==0)
{
karakSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123465789";
Sifra(duzina,karakSet);
}
else if(strcmp(set,"-1!")==0)
{
karakSet = "0123465789!@#$%^&*()_+{}:>?<~;[].,";
Sifra(duzina,karakSet);
}
else if(strcmp(set,"-a!")==0)
{
karakSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+{}:>?<~;[].,";
Sifra(duzina,karakSet);
}
else
printf("\nOpcija t moze biti: -sve, -a1, -1!, -a!\n");
}
void SGenerisi(int snaga)
{
int duz;
char *karakSet;
if(snaga == 1)
{
karakSet = "abcdefghijklmnopqrstuvwxyz";
duz = SlucajanBroj(5,8);
Sifra(duz,karakSet);
}
else if(snaga == 2)
{
karakSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123465789";
duz = SlucajanBroj(7,11);
Sifra(duz,karakSet);
}
else if(snaga == 3)
{
karakSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123465789!@#$%^&*()_+{}:>?<~;[].,";
duz = SlucajanBroj(10,18);
Sifra(duz,karakSet);
}
else if(snaga == 4)
{
karakSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123465789!@#$%^&*()_+{}:>?<~;[].,";
duz = SlucajanBroj(20,50);
Sifra(duz,karakSet);
}
else
printf("\nOvo ne sme da se pojavi -r\n");
}
int SlucajanBroj(int min,int max)
{
srand( time(0) );
return min + rand()%(max-min+1);
}
void Sifra (int duz,char* slova)
{
int i;
srand( time(0) );
for(i=0; i<duz; i++)
{
sifra[i] = slova[rand()%strlen(slova)];
}
printf("\nSifra: %s\n",sifra);
}
Comments