Portál AbcLinuxu, 30. prosince 2025 09:07
# mkpasswd
mkpasswd: systém neobsahuje žádnou DBM databázi - není co dělat.
Zkoušel jsem různé parametry a nikdy nic...
Googlil jsem a našel spouty lidí se stejným problémem leč odpověď žádnou.
Potřebuji generovat hesla do databáze a tak jsem zkoušel i fci v phpMyAdminu při zadávání řetězce - md5(), ale ta mi pro řetězec 'heslo' vracela toto:
955db0b81ef1989b4a4dfeae8061a9a6
ale správně má být asi toto: '$1$inTJUsfT$Q8r9Ap5VL.XAd3L3WMZBr/' (viz. http://www.abclinuxu.cz/forum/show/93334)
Netušíte jak tedy spravit mkpasswd nebo co dělám špatně v tom phpmyadminu?
Díky
marek@bigtux:~> echo -n "heslo" | md5sum 955db0b81ef1989b4a4dfeae8061a9a6 -
[tsunami@vodik]$ mkpasswd --version GNU mkpasswd 4.7.5
#include <stdio.h>
#include <crypt.h>
#include <stdlib.h>
#include <time.h>
#define SALTLEN 8
static char chset[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
char *myCrypt(char *pwd) {
int i;
char salt[SALTLEN+5]="$1$";
srand(time(NULL));
for(i=0;i<SALTLEN;i++)
salt[i+3]=chset[rand() % strlen(chset)];
salt[i+3]='$';
salt[i+4]='\0';
return crypt(pwd,salt);
}
int main(int argc, char *argv[]) {
if (argc<2)
fprintf(stderr,"Use: %s password\n",argv[0]);
else
printf("%s\n",myCrypt(argv[1]));
return 0;
}
Salt je soucasti vygenerovaneho retezce a kontrola hesla se provadi tak, ze se porovna crypt(heslo, ulozeny_hash)==ulozeny_hash.
Format vysledku funkce crypt:
$typ_ulozeni$salt$cisty_hash
Duvodem nahodnosti hesla je to, ze pokud bych mel slovnik typickych hesel, muzu si hash pro kazde heslo spocitat a pak az budu lamat hesla, tak staci jen projet slovnicek (uz zpracovany slovnicek se pry da najit na internetu, ma cca 20MB). Ovsem salt mi to neprijemne komplikuje, protoze bych to musel spocitat pro vsechny kombinace a to by mi zvetsilo slovnicek o cca 15 radu
Potreboval bych pak disk s 5 miliardami TB
Jinak diky nahodnosti ani admin nepozna, ze dva lide maji stejne heslo.
Existuji programy, ktere salt negeneruji nahodne, ale odvozuji ho napr. z loginu nebo ho dokonce maji fixni. To ovsem degraduje puvodni myslenku.
Salt je soucasti vygenerovaneho retezce a kontrola hesla se provadi tak, ze se porovna crypt(heslo, ulozeny_hash)==ulozeny_hash.
No jo, takze nemůžu výsledky porovnávat takto:
if '$1$m4QP6ygE$JTffnGSHh6AFu1Ic4/T02.' == '$1$Ofz0HxgB$zfFE/rvT2tmVy132dtCG60' protože by mi to nevyšlo?
Já si chci do databáze uložit zašifrované heslo - uživatel pak zadá heslo, to se zašifruje tou md5 a porovná s databází.
Ale máte pravdu, že kdyby byly otisky vždy takto stejné, tak by poté šla jednoduše použít hrubá síla...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.