home *** CD-ROM | disk | FTP | other *** search
/ Il Mio Computer 2006 May / Mico05CD.bin / Utility / CryptoMX / mfunc.js < prev    next >
Encoding:
Text File  |  2006-01-05  |  6.7 KB  |  208 lines

  1. var MCarr=new Array(
  2. "*","|",".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",
  3. ".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",
  4. ".....","-....","--...","---..","----."
  5. );
  6. var ABC012arr="*|ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  7.  
  8. function DoMorseDecrypt(x)
  9. {mess="";apos=0;bpos=0;
  10. while(bpos<x.length)
  11. {
  12.  bpos=x.indexOf(" ",apos);if(bpos<0){bpos=x.length};
  13.  dits=x.substring(apos,bpos);apos=bpos+1;let="";
  14.  for(j=0;j<MCarr.length;j++){  if(dits==MCarr[j]){let=ABC012arr.charAt(j)}  };
  15.  if(let==""){let="*"};
  16.  mess+=let;
  17. };
  18. return mess;
  19. };
  20.  
  21. function DoMorseEncrypt(x)
  22. {mess="";
  23. for(i=0;i<x.length;i++)
  24. {
  25. let=x.charAt(i).toUpperCase();
  26. for(j=0;j<MCarr.length;j++){  if(let==ABC012arr.charAt(j)){mess+=MCarr[j]}  };
  27. mess+=" ";
  28. };
  29. mess=mess.substring(0,mess.length-1);
  30. return mess;
  31. };
  32.  
  33.  
  34. function DoReverse(x){y="";for(i=0;i<x.length;i++){y+=x.charAt(x.length-1-i);};return y};
  35.  
  36.  
  37. function DoCaeserEncrypt(x,shf)
  38. {
  39. abc="abcdefghijklmnopqrstuvwxyz";
  40. ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  41. r1="";r2="";shf=eval(shf);
  42. for(i=0;i<x.length;i++){let=x.charAt(i);pos=ABC.indexOf(let);if(pos>=0){r1+=ABC.charAt(  (pos+shf)%26  )}else{r1+=let};};
  43. for(i=0;i<r1.length;i++){let=r1.charAt(i);pos=abc.indexOf(let);if(pos>=0){r2+=abc.charAt(  (pos+shf)%26  )}else{r2+=let};};
  44. return r2;
  45. };
  46.  
  47. function DoCaeserDecrypt(x,shf)
  48. {return DoCaeserEncrypt(x,26-shf);};
  49.  
  50.  
  51. function MakeCipherABC(abc,key1)
  52. {
  53. abc=abc.toUpperCase();key1=key1.toUpperCase();
  54. cyabc=key1+abc;
  55. for(i=0;i<abc.length;i++){let=cyabc.charAt(i);pos=cyabc.indexOf(let,i+1);
  56. while(pos>-1){cyabc=cyabc.substring(0,pos)+cyabc.substring(pos+1,cyabc.length);pos=cyabc.indexOf(let,i+1);};};
  57. return cyabc;
  58. }
  59.  
  60.  
  61. function DoVigenere(et,key1,key2,abc,dir,vigtype,altluabc)
  62. {dt="";et=et.toUpperCase();key1=key1.toUpperCase();key2=key2.toUpperCase();abc=abc.toUpperCase();dir=dir.toUpperCase();
  63. pos=et.indexOf(" ");
  64. while(pos>-1){et=et.substring(0,pos)+et.substring(pos+1,et.length);pos=et.indexOf(" ");};
  65. cyabc=MakeCipherABC(abc,key1);
  66. key1=cyabc;
  67. lu=cyabc;
  68. if(vigtype=="N"){lu=abc};
  69. if(vigtype=="K"){lu=cyabc};
  70. if(vigtype=="A"){lu=altluabc};
  71. for(i=0;i<et.length;i++)
  72. {let=et.charAt(i);letinabc=abc.indexOf(let);
  73. if(letinabc<0){dt+=let;et=et.substring(0,i)+et.substring(i+1,et.length);i--}
  74. else{
  75. if(dir=="E"){dt+=lu.charAt((key1.indexOf(let)+key1.length+key1.indexOf(key2.charAt(i%key2.length)))%key1.length);};
  76. if(dir=="D"){dt+=lu.charAt((key1.indexOf(let)+key1.length-key1.indexOf(key2.charAt(i%key2.length)))%key1.length);};};
  77.  
  78. };
  79. return dt;};
  80.  
  81. function DoFreqCnt(x,abc)
  82. {var i,abc,pos,freqs;
  83.  pos=x.indexOf(" ");while(pos>-1){x=x.substring(0,pos)+x.substring(pos+1,x.length);pos=x.indexOf(" ");};
  84.  x=x.toUpperCase();freqs="";
  85.  letarr=new Array("");
  86.  for(i=0;i<abc.length;i++){letarr[i]=0;};
  87.  for(i=0;i<x.length;i++){letarr[abc.indexOf(x.charAt(i))]++};
  88.  for(i=0;i<abc.length;i++){freqs+=abc.charAt(i)+":"+letarr[i]+"/"+x.length+"="+letarr[i]/x.length+"\n";};
  89.  return freqs;
  90. }
  91.  
  92. function DoRowColumnTranspose(et,rowcol,jump,startrow)
  93. {dt="";if((et=="")||(rowcol=="")||(jump=="")||(startrow=="")){dt="You must supply all values";return dt;}
  94. maxrow=eval(rowcol.substring(0,rowcol.indexOf(",")));
  95. maxcol=eval(rowcol.substring(rowcol.indexOf(",")+1,rowcol.length));
  96. jump=eval(jump);startrow=eval(startrow);
  97. if(startrow>maxrow){dt="Start Row must be <= Max Rows";return dt;}
  98. lin=new Array("");
  99. for(i=0;i<maxrow;i++){lin[i]=et.substring(maxcol*i,maxcol*(i+1))};
  100. row=startrow-1;col=maxcol-1;//starting point
  101. for(i=0;i<(maxrow*maxcol);i++)
  102. {dt+=lin[row].charAt(col);
  103.  row=row+jump;
  104.  while(row>=maxrow){row-=maxrow;col-=1;};
  105.  while(col<=-1){col+=maxcol;row-=1;};
  106.  while(row<=-1){row+=maxrow;col-=1;};
  107.  while(col>=maxcol){col-=maxcol;row-=1;};
  108. };
  109. return dt;};
  110.  
  111.  
  112. function DoModTranspose(et,startlet,jumpinc,modulus)
  113. {dt="";if((et=="")||(startlet=="")||(jumpinc=="")||(modulus=="")){dt="You must supply all values";return dt;}
  114. startlet=eval(startlet)-1;jumpinc=eval(jumpinc);modulus=eval(modulus);
  115. if(startlet>modulus){dt="startlet must be <= maxchar";return dt;}
  116. et=escape(et);
  117. pos=et.indexOf("%0D");
  118. while(pos>-1){et=et.substring(0,pos)+et.substring(pos+3,et.length);pos=et.indexOf("%0D");};
  119. pos=et.indexOf("%0A");
  120. while(pos>-1){et=et.substring(0,pos)+et.substring(pos+3,et.length);pos=et.indexOf("%0A");};
  121. et=unescape(et);
  122. for(i=0;i<(modulus);i++){dt+=et.charAt((startlet+jumpinc*i)%modulus);};
  123. return dt;};
  124.  
  125.  
  126. function DoAsciiHex(x,dir)
  127. {hex="0123456789ABCDEF";almostAscii=' !"#$%&'+"'"+'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ['+'\\'+']^_`abcdefghijklmnopqrstuvwxyz{|}';r="";
  128. if(dir=="A2H")
  129. {for(i=0;i<x.length;i++){let=x.charAt(i);pos=almostAscii.indexOf(let)+32;h16=Math.floor(pos/16);h1=pos%16;r+=hex.charAt(h16)+hex.charAt(h1);};};
  130. if(dir=="H2A")
  131. {for(i=0;i<x.length;i++){let1=x.charAt(2*i);let2=x.charAt(2*i+1);val=hex.indexOf(let1)*16+hex.indexOf(let2);r+=almostAscii.charAt(val-32);};};
  132. return r;
  133. };
  134.  
  135.  
  136. function DoSubstitute(x,orig,sub,dir)
  137. {
  138. x=x.toUpperCase();r="";
  139. if(dir=="e")
  140. {for(i=0;i<x.length;i++){let=x.charAt(i);pos=orig.indexOf(let);if(pos>-1){r+=sub.charAt(pos)}else{r+=let}}};
  141. if(dir=="d")
  142. {for(i=0;i<x.length;i++){let=x.charAt(i);pos=sub.indexOf(let);if(pos>-1){r+=orig.charAt(pos)}else{r+=let}}};
  143. return r;
  144. };
  145.  
  146. function SwitchEm(x,a,b)
  147. {
  148. posA=x.indexOf(a);
  149. posB=x.indexOf(b);
  150. r1=x.substring(0,posA)+b+x.substring(posA+1,x.length);
  151. r2=r1.substring(0,posB)+a+r1.substring(posB+1,r1.length);
  152. return r2;
  153. };
  154.  
  155.  
  156.  
  157.  
  158.  
  159. function MakePlayfairSquare(abc,key1)
  160. {
  161. cyabc=MakeCipherABC(abc,key1);
  162. row = new Array();for(i=0;i<5;i++){row[i]=""};
  163. for(i=0;i<5;i++){for(j=0;j<5;j++)row[i]+=cyabc.charAt(5*i+j);};
  164. sqr="";for(i=0;i<5;i++){sqr+=row[i]+"\n"};
  165. return sqr;
  166. };
  167.  
  168.  
  169. function DoPlayfair(et,abc,key1,dir,dup)
  170. {
  171. et=et.toUpperCase();abc=abc.toUpperCase();key1=key1.toUpperCase();
  172. pos=et.indexOf(" ");
  173. while(pos>-1){et=et.substring(0,pos)+et.substring(pos+1,et.length);pos=et.indexOf(" ");};
  174.  
  175. pos=et.indexOf("?");
  176. while(pos>-1){et=et.substring(0,pos)+et.substring(pos+1,et.length);pos=et.indexOf("?");};
  177.  
  178. for(i=0;i<et.length;i=i+2)
  179. {let1=et.charAt(i);let2=et.charAt(i+1);if(let1==let2){et=et.substring(0,i+1)+"X"+et.substring(i+1,et.length)};};
  180. if( (et.length%2)==1 ){et+='X'}
  181.  
  182. if(dup!=""){
  183. pos=et.indexOf(dup);
  184. while(pos>-1){et=et.substring(0,pos)+"I"+et.substring(pos+1,et.length);pos=et.indexOf(dup);};
  185. };
  186.  
  187. cyabc=MakeCipherABC(abc,key1)
  188. row=new Array();for(i=0;i<5;i++){row[i]=""};
  189. for(i=0;i<5;i++){for(j=0;j<5;j++)row[i]+=cyabc.charAt(5*i+j);};
  190.  
  191. shf=1;if(dir=="E"){shf=1};if(dir=="D"){shf=4};
  192.  
  193. dt="";
  194. for(i=0;i<et.length;i=i+2)
  195. {
  196. pos1=cyabc.indexOf(et.charAt(i));pos2=cyabc.indexOf(et.charAt(i+1));
  197. x1=pos1%5;y1=Math.floor(pos1/5);x2=pos2%5;y2=Math.floor(pos2/5);
  198.  
  199. if(y1==y2){x1=(x1+shf)%5;x2=(x2+shf)%5}
  200. else if(x1==x2){y1=(y1+shf)%5;y2=(y2+shf)%5}
  201. else{temp=x1;x1=x2;x2=temp};
  202.  
  203. dt+=row[y1].charAt(x1)+row[y2].charAt(x2) ;
  204. };
  205.  
  206.  
  207. return dt;
  208. };