NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – Generovanie hesiel

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
melda23hokej
Člen
Avatar
melda23hokej:1.6.2013 23:12

Jak by to šlo udělat i s písmenama ?

Avatar
Jozef
Člen
Avatar
Odpovedá na melda23hokej
Jozef:17.3.2015 14:21

Pre prípad, že by to niekoho zaujímalo, tak pripájam svoj kód, ktorý robí toto isté s písmenami. V

n = 100000;

, si dosaďte aké číslo chcete, vypíše to všetky možnosti až po pozíciu, ktorú zvolíte. Ak chcete napr. od 3 miestnych znakov, tak si za k dosadíte namiesto 0 číslo 703(pozícia prvého trojmiestneho reťazca) atď...

int main()
{
  FILE*fa;
  fa = fopen("Hesla.txt","a+");
  uint64_t i,zad_cisloint,cis_pism,j = 0,k,n;
  double zad_cislor;
  char znak[26];
  char *zn;
  for(i = 0; i < 26;i++)
      znak[i] = (65+i);
  n = 100000;
  char **retazec;
  retazec = (char **) malloc(n * sizeof(char *));
  for(i = 0; i < n; i++)
      retazec[i] = (char *) malloc(26 * sizeof(char));
  for(k = 0; k < n; k++){
  zad_cisloint = k+1;
  zad_cislor = zad_cisloint;
  while((zad_cislor / 26) > 0){
        i = j++;
        zad_cisloint = (uint64_t)zad_cislor;
        cis_pism = zad_cisloint % 26;
        if(cis_pism == 0)
            cis_pism = 26;
        retazec[k][i] = znak[cis_pism-1];
        zad_cislor = (zad_cisloint-cis_pism) / 26;
  }
        retazec[k][j] = '\0';
        j = 0;
  }
  for(k = 0; k < n; k++){
      for(i = strlen(retazec[k]); i > 0; i--)
            fprintf(fa,"%c",retazec[k][i-1]);
      fprintf(fa,"\n");
  }

  return 0;
}
Odpovedať
I'm not afraid to die on a treadmill
Avatar
neutr
Člen
Avatar
Odpovedá na melda23hokej
neutr:27.12.2016 18:23

Je to sice starší téma ale odpovím. Nejsnadnějí jsou 4 vnořené cykly FOR - píšu schematicky pro StarBasic.
deklarovat a(3) as string. Rozsah iterací je dán od znaku 33 (tuším vykřičník) až 254 - 255 se asi nepoužívá i tak jsou tam nečeské znaky.
For a 33 To 254
For b 33 To 254
For c 33 To 254
For d 33 To 254
a(0) = Char(a)
a(1) = Char(b)
a(2) = Char(c)
a(3) = Char(d)
Next d
Next c
Next b
Next a

Jinak bych doporučil spíš načítat z array kde se vynechají některé znaky dle uvážení. Takže pak do zdrojové array zadat například UTF-8 - tipuji cca 200 znaků a cykly nastavit od 0 do 200.
Má to výhodu v tom, že nepotřebuješ přímo wordlist - nanejvýš zabudovat zápis posledního testovaného cyklu pro případy přerušení práce.

Avatar
neutr
Člen
Avatar
Odpovedá na neutr
neutr:27.12.2016 18:46

Ještě jsem zapoměl - když bys chtěl WordList tak potom pomocí dvojrozměrného pole a(i,3) Kde inkrementuješ "i" a když by mělo přetéct tak vytvořít jiný seznam od i = 0. Navázat se musí jen čísla na cyklech a, b, c, d. Má to výhodu že nemusíš nic extra jiného sledovat jen aby počet výrazů nepřetekl. Nanejvýš tam vložit nějakou hlášku, že je to u konce.

Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 4 správy z 4.