Thread Fehler in Hash-Algorithmus
(12 answers)
Opened by Gast at 2008-07-02 22:22 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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 print "Wort:"; $pw=<STDIN>; chomp($pw); $la=length($pw); # Länge des Wortes $cos1=0; # Teil die Buchstaben der Eingabe in einzelne Strings auf. while($cos1<$la){ $ter1 = substr ($pw,$cos1,1); push(@db1,$ter1); $cos1++; } # $res=$la*36; $res2=$res/33; $ra = 36/$res2; # $trash='gt9uysf4d6pw2m1aqhcj0xv73bkliorn5ez8'; $co3=0; $feng=$la*26; while($co3<=$feng){ # Erzeugt (26*Wortlänge) Anzahl verschiedener schrott-code. $tr=$trash; $tr2=$trash; $subs= substr($tr2,-$co3,$co3); substr($tr,0,0)=$subs; substr($tr,-$co3,$co3)=''; $co3++; push(@trash,"$tr$tr$tr"); } # if ($la & 1){$ge='-'} # guckt ob das wort gerade/ungerade ist @ar= a..z; @arg= A..Z; while($qet5<$la){ # für diese schleife solange durch wie das Wort lang ist. $var=0; while($var<26){ $tq=@trash[$zj]; if(@db1[$qet5]=@ar[$var]){# Untersucht jeden Buchstaben ob er nun a,b,c etc ist und gibt jedem einen anderen trashcode. $tn=$ge.($var+$la); $subs= substr($tq,$tn,$ra); # nimmt soviel von dem trash code dass der hash am Ende 33 zeichen ergibt, und ersetzt die buchstaben des wortes. print "$subs\n"; substr(@db1[$qet5],0,$ra)=$subs; } if(@db1[$qet5]=@arg[$var]){ # Macht das selbe mit Grossbuchstaben $tn2=$ge.($var+$la+1); $subs= substr($tq,$tn2,$ra); substr(@db1[$qet5],0,$ra)=$subs; } $zj++; # nimmt einen neuen trash-code. $var++; # geht zum nächsten buchstaben des alphabets. } $qet5++; #geht zum nächsten buchstaben des wortes. } print "@db1"; |