Thread Algorythmus liefert verschiedene Werte?
(5 answers)
Opened by ~Br4inP4in~ at 2008-10-05 14:44
"xor" ist eine logische Verknüpfung:
Mein Fehler war "xor" mit "^" gleich zu setzen. "^" macht hier mit jedem Bit "xor" von der Eingabe mit dem String. Das besondere an "xor" bzw. "^" ist, dass man den verschlüsselten String mit dem selben Schlüssel entschlüsseln kann mit dem man ihn Verschlüsselt hat. Ist der Schlüssel nicht bekannt, so ist der Verschlüsselte String nicht mehr Entschlüsselbar. Ich benutze hier das "^" um den Sring noch ein wenig zu "salzen". Das ist an sich nicht Umbedingt nötig, schadet aber auch nichts. :-) MD5 ist bedingt knackbar (es gibt ein endliche Anzahl von Strings, die den selben MD5 String liefert). Einfacher wird es in deinem Fall auchnoch, da du nur einen Teilstring der MD5-Summe nutzt, darum fügte ich noch etwas "Salz" hinzu um das zu Erschwehren, vorausgesetzt man kennt den Code nicht. :-) Noch etwas besser wäre die Variante: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # Zufallsgenerator mit "Zufallswert" initialisieren srand(rand(time)); my $name='turnen'; my $filename=create_crypt($name); print "$filename\n"; print "OK\n" if(check_crypt($filename,$name)); sub create_crypt { my $salt=join('',grep{$_=chr(int(rand(256)))}(0..5)); return unpack('H*',reverse(substr(md5(reverse(shift) ^ $salt),0,5)).$salt ); } sub check_crypt { my $crypt=pack('H*', shift); my $salt=substr($crypt,5,length($crypt),''); return 1 if($crypt eq reverse(substr(md5(reverse(shift) ^ $salt),0,5))); return 0; } Vorteile: - Es ist sehr unwahrscheinlich zweimal den selben Dateinamen zu erzeugen. - Es ist eine recht "starke" Verschlüsselung. Nachteile: - Wenn du den verschlüsselten Dateinamen zu einem Namen suchst, musst du alle vorhanden Dateinamen mit check_crypt gegen den den Namen testen. Das kann natürlich recht langsam werden. - Security by obscurity. Nur wer den Code nicht kennt hat es schwer. |