=/= MySql Encrypt =/= _ 2008-10-27 00:28:18 _ Prilikom testiranja jednog sistema za upravljanje hosting nalozima primetio sam veoma cudno ponasanje prilikom izmene sifre za pristup. Desavalo mi se da se u vise navrata ulogujem sa starom sifrom na test nalog iako sam je promenio vise puta ... Iskreno, prvo sam mislio da ja negde gresim, pa sam zato konsultovao svog kolegu Aleksandra Markovica, koji mi je pomogao da nadjem u cemu je problem. Problem je u samom operativnom sistemu, tj u MySQL funkciji koja se zasniva na sistemskoj funkciji. Rec je o MySQL funkciji ENCRYPT(): Encrypts str using the Unix crypt() system call and returns a binary string. The salt argument should be a string with at least two characters. If no salt argument is given, a random value is used. ENCRYPT() ignores all but the first eight characters of str, at least on some systems. This behavior is determined by the implementation of the underlying crypt() system call. The use of ENCRYPT() with multi-byte character sets other than utf8 is not recommended because the system call expects a string terminated by a zero byte.If crypt() is not available on your system (as is the case with Windows), ENCRYPT() always returns NULL. Problem nastaje kada prilikom izmene sifre, prvih osam karaktera ostavite iste. Sa obzirom da sam koristio genericke sifre, uvek su imale iste pocetne karaktere. Generalno ovo je veliki propust aplikacije koje sam testirao, za pocetak bar bi trebali da ubace biranje logike za enkripciju. Kada sam krenuo malo dalje, i pretrazio Google Code, video sam da veliki broj aplikacija ima isti problem ... Verujem da je problem prvenstveno u nepoznavanju funkcionisanja ENCRYPT funkcije, ali to nikako nije i opravdanje. Ako ste do sada koristili ovu funkciju a niste znali gore pomenuto, za pocetak bar dodajte u svoje aplikacije proveru da li su prvih osam karaktera isti, ako vec ne mozete da izmenite sistem za enkripciju.