Nick: Zipper75 Oggetto: re:GVQXQXALCHGTXYIZKW Data: 15/1/2004 13.37.54 Visite: 51
enigma.js so che non vi serve ma sta il codice fottuto. Alfabeto = 'ABCDEFGHIJKLMNOPQRSTUVXYZ'; Rotori = new Array(); Rotori[0] = new Array(8, 10, 7, 4, 17, 15, 24, 21, 19, 3, 1, 13, 9, 6, 18, 22, 20, 16, 14, 5, 23, 11, 2, 12, 0, 25); Rotori[1] = new Array(17, 14, 20, 0, 16, 19, 6, 2, 15, 11, 13, 23, 18, 3, 10, 4, 9, 22, 12, 1, 5, 25, 21, 24, 8, 7); Rotori[2] = new Array(12, 10, 22, 9, 21, 2, 8, 20, 3, 4, 25, 1, 11, 5, 17, 0, 16, 15, 19, 7, 24, 14, 18, 13, 23, 6); Start = new Array(15, 6, 26); Rotori[3] = new Array(); Rotori[4] = new Array(); Rotori[5] = new Array(); for (conta = 0; conta < 26; conta++){ Rotori[3][Rotori[2][conta]] = conta; Rotori[4][Rotori[1][conta]] = conta; Rotori[5][Rotori[0][conta]] = conta; } Rotori[6] = new Array(12, 17, 25, 8,15,7,14,5,3,22,16,21,0,20,6,4,10,1,24,23,13,11,9,19,18,2); Inizio = 'LQWERTZUIOASDFGHJKPYXCVBNM'; Andata = new Array(-1,-1,-1,-1,-1); Ritorno = new Array(-1,-1,-1,-1,-1); function AvanzaRotori(r1, r2, r3, rot1, rot2, rot3 ){ c1 = parseInt(r1.value); c2 = parseInt(r2.value); c3 = parseInt(r3.value); c1 = (c1+1)%26; // alert(Start[0]+Start[1]+Start[2]); if (c1 == Start[rot1.value]){ c2 = (c2+1)%26; if (c2 == Start[rot2.value]){ c3 = (c3+1)%26; } } r1.value = c1; r2.value = c2; r3.value = c3; } function EnigmaCar(ch, rot1, rot2, rot3, rifl, r1, r2, r3){ c1 = parseInt(r1.value); // alert(c1); c2 = (26 + parseInt(r2.value) - c1)%26; // alert(c2); c3 = (26 + parseInt(r3.value) - parseInt(r2.value))%26; // alert(c3); r0 = (26 + parseInt(rifl.value) - parseInt(r3.value))%26; // alert(r0); r1 = (26 - r0)%26; c5 = 26 - c3; c6 = 26 - c2; c7 = 26 - c1; chpos = Inizio.indexOf(ch); Andata[4] = chpos; chpos = (chpos + c1) % 26; Andata[rot1.value+1] = chpos; chpos = Rotori[rot1.value][chpos]; chpos = (chpos + c2) % 26; Andata[rot2.value+1] = chpos; chpos = Rotori[rot2.value][chpos]; chpos = (chpos + c3) % 26; Andata[rot3.value+1] = chpos; chpos = Rotori[rot3.value][chpos]; chpos = (chpos + r0) % 26; Andata[0] = chpos; chpos = Rotori[6][chpos]; Ritorno[0] = chpos; chpos = (chpos + r1) % 26; chpos = Rotori[5-rot3.value][chpos]; Ritorno[rot3.value+1] = chpos; chpos = (chpos + c5) % 26; chpos = Rotori[5-rot2.value][chpos]; Ritorno[rot2.value+1] = chpos; chpos = (chpos + c6) % 26; chpos = Rotori[5-rot1.value][chpos]; Ritorno[rot1.value+1] = chpos; chpos = (chpos + c7) % 26; Ritorno[4] = chpos; return Inizio.charAt(chpos); } function EnigmaTesto(chiaro, rot1, rot2, rot3, rifl, r1, r2, r3){ critto = ''; for(ind=0; ind < chiaro.value.length; ind++){ // alert(critto); critto += EnigmaCar(chiaro.value.charAt(ind), rot1, rot2, rot3, rifl, r1, r2, r3); AvanzaRotori(r1, r2, r3, rot1, rot2, rot3 ); } return critto; } function Enigma(chiaro, cifrato, rot1, rot2, rot3, rifl, r1, r2, r3){ chiaro.value = chiaro.value.toUpperCase(); if (chiaro.value.length == 1){ cifrato.value = EnigmaCar(chiaro.value, rot1, rot2, rot3, rifl, r1, r2, r3) } else { Andata = [-1,-1,-1,-1,-1]; Ritorno = [-1,-1,-1,-1,-1]; // alert("Cifra"); cifrato.value = EnigmaTesto(chiaro, rot1, rot2, rot3, rifl, r1, r2, r3) } } function MostraIngresso(dove){ rigaHTML = ' '; anda = Andata[4]; //alert(anda); rito = Ritorno[4]; //alert(rito); for (pos=0; pos < 26; pos++) { usc = (pos+1)%26; if (usc== anda){ rigaHTML += '' + Inizio.charAt(usc) + ' '; } else if (usc == rito){ rigaHTML += '' + Inizio.charAt(usc) + ' '; } else { rigaHTML += Inizio.charAt(usc) + ' '; } } rigaHTML += ' '; if (navigator.appName == 'Netscape'){ document.getElementById(dove).innerHTML = rigaHTML; } else { document.all[dove].innerHTML = rigaHTML; } } function MostraRotore(dove, rot, diff){ rigaHTML = ' '; diff = parseInt(diff); start = (1 + diff)%26; // alert (pos); anda = Andata[rot+1]; //alert(anda); rito = Ritorno[rot+1]; //alert(rito); pos = start; do { uscita = Rotori[5 - rot][pos]; if (pos == anda){ colin = '' + Inizio.charAt(anda) + ''; } else if (pos == rito){ colin = '' + Inizio.charAt(pos) + ''; } else { colin = Inizio.charAt(pos); } if (uscita == anda){ colout = ''+ Inizio.charAt(uscita) + ''; }else if (uscita == rito){ colout = ''+ Inizio.charAt(uscita) + ''; }else{ colout = Inizio.charAt(uscita); } rigaHTML += colout + ' ' + colin + " "; pos = (pos+1) % 26 } while (pos != start) rigaHTML += ' '; if (navigator.appName == 'Netscape'){ document.getElementById(dove).innerHTML = rigaHTML; } else { document.all[dove].innerHTML = rigaHTML; } } function MostraRotori(RotSin, RotCen, RotDes, rot1, rot2, rot3, rifl, r1, r2, r3, Rifletti, PosIniz){ c1 = parseInt(r1.value); c2 = parseInt(r2.value); c3 = parseInt(r3.value); c4 = parseInt(rifl.value); // MostraRotore(RotSin, rot3.value, (c1+c2+c3)%26); // MostraRotore(RotCen, rot2.value, (c1+c2)%26); MostraRotore(RotSin, rot3.value, c3); MostraRotore(RotCen, rot2.value, c2); MostraRotore(RotDes, rot1.value, c1); MostraRotore(Rifletti, -1, c4); MostraIngresso(PosIniz); } function ControllaRotori(rot, rot1, rot2, rot3){ if (rot2.value == rot1.value){ if (rot == 1){ rot2.value = 3-rot1.value-rot3.value; rot2.selectedIndex = rot2.value; } else { rot1.value = 3-rot2.value-rot3.value; rot1.selectedIndex = rot1.value; } } if (rot3.value == rot1.value){ if (rot == 1){ rot3.value = 3-rot2.value-rot1.value; rot3.selectedIndex = rot3.value; } else { rot1.value = 3-rot2.value-rot3.value; rot1.selectedIndex = rot1.value; } } if (rot3.value == rot2.value){ if (rot == 2){ rot3.value = 3-rot1.value-rot2.value; rot3.selectedIndex = rot3.value; } else { rot2.value = 3-rot1.value-rot3.value; rot2.selectedIndex = rot2.value; } } }
|