Advertisement
marongiuchristian93

[JS] 6 - Decodifica di una stringa

Apr 14th, 2012
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <html>
  2. <head>
  3. <title>Decodifica di una stringa</title>
  4. <meta name="author" content="Christian Marongiu">
  5.  
  6. <!-- SCRIPT DI CODIFICA -->
  7. <script type="text/javascript" src="codifica.js">
  8. </script>
  9.  
  10. <!-- SCRIPT DI DECODIFICA -->
  11. <script type="text/javascript">
  12. /*
  13. ##################################################################
  14. ## SCRIPT BY:       Christian Marongiu          ##
  15. ## INFO:        http://chrmar.altervista.org        ##
  16. ## CONTACT:     christianmarongiu93@gmail.com       ##
  17. ##                              ##
  18. ## Pagina HTML/JS per un'esempio di decodifica di una       ##
  19. ## parola o stringa                     ##
  20. ##################################################################
  21. */
  22.  
  23. function decodifica(stringa_codificata) {
  24. var codice = stringa_codificata;
  25. var porzione = "";
  26. var giri = codice.length / 3; // quanti giri devo fare pensando a un taglio ogni 3 caratteri
  27. var x = 0;
  28. var decodifica = ""; // inizializzo la stringa decodificata
  29. var errore = 0; // inizializzo errore
  30. var msg = "";
  31. document.getElementById("errore_decodifica").innerHTML= ""; // imposto l'errore vuoto ad ogni inizio
  32. // della funzione altrimenti mi rimane il msg di errore
  33.  
  34. for(i=0;i<giri;i++) { // faccio tanti giri quanti saranno i caratteri (lunghezza codice / 3)
  35.     porzione = codice.substr(x,3); 
  36.     // substr usa due paramentri, il primo serve per indicare la posizione di partenza
  37.     // il secondo server per indicare di quante posizioni andare in avanti
  38.     // se ho una stringa "ciao", la posizione 0 corrisponde a c, la 1 corrisponde ad i,
  39.     // la 2 corrisponde ad a, e la 3 corrisponde ad o, perche e' come un array e si parte da 0
  40.     // quindi aumentando il valore di x, come faro' poi, in pratica dico alla funzione
  41.     // di partire da x posizioni dopo rispetto al giro precedente
  42.     // esempio prima parto dalla C e arrivo alla I, poi parto dalla A e arrivo alla O
  43.     // e via dicendo, dipende dai casi
  44.     switch(porzione) {
  45.    
  46.         // LETTERE MINUSCOLE
  47.         case "001":
  48.             decodifica += "a";
  49.             break;
  50.         case "002":
  51.             decodifica += "b";
  52.             break;
  53.         case "003":
  54.             decodifica += "c";
  55.             break;
  56.         case "004":
  57.             decodifica += "d";
  58.             break;
  59.         case "005":
  60.             decodifica += "e";
  61.             break;
  62.         case "006":
  63.             decodifica += "f";
  64.             break;
  65.         case "007":
  66.             decodifica += "g";
  67.             break;
  68.         case "008":
  69.             decodifica += "h";
  70.             break;
  71.         case "009":
  72.             decodifica += "i";
  73.             break;
  74.         case "010":
  75.             decodifica += "j";
  76.             break;
  77.         case "011":
  78.             decodifica += "k";
  79.             break;
  80.         case "012":
  81.             decodifica += "l";
  82.             break;
  83.         case "013":
  84.             decodifica += "m";
  85.             break;
  86.         case "014":
  87.             decodifica += "n";
  88.             break;
  89.         case "015":
  90.             decodifica += "o";
  91.             break;
  92.         case "016":
  93.             decodifica += "p";
  94.             break;
  95.         case "017":
  96.             decodifica += "q";
  97.             break;
  98.         case "018":
  99.             decodifica += "r";
  100.             break;
  101.         case "019":
  102.             decodifica += "s";
  103.             break;
  104.         case "020":
  105.             decodifica += "t";
  106.             break;
  107.         case "021":
  108.             decodifica += "u";
  109.             break;
  110.         case "022":
  111.             decodifica += "v";
  112.             break;
  113.         case "023":
  114.             decodifica += "w";
  115.             break;
  116.         case "024":
  117.             decodifica += "x";
  118.             break;
  119.         case "025":
  120.             decodifica += "y";
  121.             break;
  122.         case "026":
  123.             decodifica += "z";
  124.             break;
  125.            
  126.         // LETTERE MAIUSCOLE
  127.         case "101":
  128.             decodifica += "A";
  129.             break;
  130.         case "102":
  131.             decodifica += "B";
  132.             break;
  133.         case "103":
  134.             decodifica += "C";
  135.             break;
  136.         case "104":
  137.             decodifica += "D";
  138.             break;
  139.         case "105":
  140.             decodifica += "E";
  141.             break;
  142.         case "106":
  143.             decodifica += "F";
  144.             break;
  145.         case "107":
  146.             decodifica += "G";
  147.             break;
  148.         case "108":
  149.             decodifica += "H";
  150.             break;
  151.         case "109":
  152.             decodifica += "I";
  153.             break;
  154.         case "110":
  155.             decodifica += "J";
  156.             break;
  157.         case "111":
  158.             decodifica += "K";
  159.             break;
  160.         case "112":
  161.             decodifica += "L";
  162.             break;
  163.         case "113":
  164.             decodifica += "M";
  165.             break;
  166.         case "114":
  167.             decodifica += "N";
  168.             break;
  169.         case "115":
  170.             decodifica += "O";
  171.             break;
  172.         case "116":
  173.             decodifica += "P";
  174.             break;
  175.         case "117":
  176.             decodifica += "Q";
  177.             break;
  178.         case "118":
  179.             decodifica += "R";
  180.             break;
  181.         case "119":
  182.             decodifica += "S";
  183.             break;
  184.         case "120":
  185.             decodifica += "T";
  186.             break;
  187.         case "121":
  188.             decodifica += "U";
  189.             break;
  190.         case "122":
  191.             decodifica += "V";
  192.             break;
  193.         case "123":
  194.             decodifica += "W";
  195.             break;
  196.         case "124":
  197.             decodifica += "X";
  198.             break;
  199.         case "125":
  200.             decodifica += "Y";
  201.             break;
  202.         case "126":
  203.             decodifica += "Z";
  204.             break;     
  205.            
  206.         // SIMBOLI
  207.         case "211":
  208.             decodifica += "!";
  209.             break;
  210.         case "221":
  211.             decodifica += "@";
  212.             break;
  213.         case "231":
  214.             decodifica += "#";
  215.             break;
  216.         case "241":
  217.             decodifica += "$";
  218.             break;
  219.         case "251":
  220.             decodifica += "%";
  221.             break;
  222.         case "261":
  223.             decodifica += "^";
  224.             break;
  225.         case "271":
  226.             decodifica += "&";
  227.             break;
  228.         case "281":
  229.             decodifica += "*";
  230.             break;
  231.         case "291":
  232.             decodifica += "(";
  233.             break;
  234.         case "201":
  235.             decodifica += ")";
  236.             break;
  237.         case "202":
  238.             decodifica += "_";
  239.             break;
  240.         case "203":
  241.             decodifica += "?";
  242.             break;
  243.         case "299":
  244.             decodifica += "+";
  245.             break;
  246.         case "289":
  247.             decodifica += "-";
  248.             break;
  249.         case "279":
  250.             decodifica += "/";
  251.             break;
  252.         case "269":
  253.             decodifica += "\\"; // due barre perche la prima significa ignora
  254.             break;
  255.         case "259":
  256.             decodifica += "=";
  257.             break;
  258.         case "266":
  259.             decodifica += "[";
  260.             break;
  261.         case "263":
  262.             decodifica += "]";
  263.             break;
  264.         case "256":
  265.             decodifica += "{";
  266.             break;
  267.         case "253":
  268.             decodifica += "}";
  269.             break;
  270.         case "233":
  271.             decodifica += ".";
  272.             break;
  273.         case "234":
  274.             decodifica += ",";
  275.             break;
  276.         case "235":
  277.             decodifica += ";";
  278.             break;
  279.         case "236":
  280.             decodifica += ":";
  281.             break;
  282.         case "225":
  283.             decodifica += "<";
  284.             break;
  285.         case "224":
  286.             decodifica += ">";
  287.             break;
  288.            
  289.         // NUMERI
  290.         case "300":
  291.             decodifica += "0";
  292.             break;
  293.         case "301":
  294.             decodifica += "1";
  295.             break;
  296.         case "302":
  297.             decodifica += "2";
  298.             break;
  299.         case "303":
  300.             decodifica += "3";
  301.             break;
  302.         case "304":
  303.             decodifica += "4";
  304.             break;
  305.         case "305":
  306.             decodifica += "5";
  307.             break;
  308.         case "306":
  309.             decodifica += "6";
  310.             break;
  311.         case "307":
  312.             decodifica += "7";
  313.             break;
  314.         case "308":
  315.             decodifica += "8";
  316.             break;
  317.         case "309":
  318.             decodifica += "9";
  319.             break;
  320.        
  321.         // Se non e'nessuno dei precedenti casi restituisco un errore
  322.         default:
  323.             errore = 2;
  324.             break;
  325.     }
  326.     x = x + 3;  // incremento x di 3 per far partire il giro successivo dal carattere in posizione + 3
  327. } // fine for
  328. if(errore == 2) {
  329.     // se errore e' 2 significa che e' stato inserito qualcosa di non valido
  330.     msg = "Inseriti valori non validi nella stringa da decodificare!";
  331.     document.getElementById("errore_decodifica").innerHTML=msg;
  332.     return false;
  333. }
  334.  
  335. if(errore == 0) {
  336.     // se non ci sono errori
  337.     msg = "Stringa da decodificare: " + codice;
  338.     document.getElementById("stringa_da_decodificare").innerHTML=msg;
  339.     msg = "Stringa decodificata: " + decodifica;
  340.     document.getElementById("stringa_decodificata").innerHTML=msg;
  341.     return false;
  342. }
  343.  
  344. } // Fine funzione decodifica()
  345. /*
  346. MAPPA DEI CARATTERI
  347.  
  348. Lettera minuscola = 0 + numero lettera con due cifre
  349. Lettera maiuscola = 1 + numero lettera con due cifre
  350.  
  351. A = 01
  352. B = 02
  353. C = 03
  354. D = 04
  355. E = 05
  356. F = 06
  357. G = 07
  358. H = 08
  359. I = 09
  360. J = 10
  361. K = 11
  362. L = 12
  363. M = 13
  364. N = 14
  365. O = 15
  366. P = 16
  367. Q = 17
  368. R = 18
  369. S = 19
  370. T = 20
  371. U = 21
  372. V = 22
  373. W = 23
  374. X = 24
  375. Y = 25
  376. Z = 26
  377.  
  378. Per i simboli = 2 + un numero di due cifre per ogni simbolo
  379.  
  380. ! = 11
  381. @ = 21
  382. # = 31
  383. $ = 41
  384. % = 51
  385. ^ = 61
  386. & = 71
  387. * = 81
  388. ( = 91
  389. ) = 01
  390. _ = 02
  391. ? = 03
  392.  
  393. + = 99
  394. - = 89
  395. / = 79
  396. \ = 69
  397. = = 59
  398.  
  399. [ = 66
  400. ] = 63
  401. { = 56
  402. } = 53
  403. . = 33
  404. , = 34
  405. ; = 35
  406. : = 36
  407. < = 25
  408. > = 24
  409.  
  410. Per i numeri = 30 + il numero
  411. 0 = 300
  412. 1 = 301
  413. 2 = 302
  414. 3 = 303
  415. 4 = 304
  416. 5 = 305
  417. 6 = 306
  418. 7 = 307
  419. 8 = 308
  420. 9 = 309
  421.  
  422. */
  423.    
  424. </script>
  425.  
  426. <form name="codifica_stringa" id="codifica_stringa">
  427. Stringa da codificare: <input type="text" size="96" id="parola_input" />
  428. <br><br>
  429. <button onClick="javascript:return codifica(document.getElementById('parola_input').value)">Codifica!</button>
  430. <br>
  431. <div id="stringa_da_codificare">
  432. </div>
  433. <div id="stringa_codificata">
  434. </div>
  435. <div id="errore_codifica">
  436. </div>
  437. </form>
  438.  
  439. <br>
  440. <hr />
  441. <br>
  442.  
  443. <form name="decodifica_stringa" id="decodifica_stringa">
  444. Stringa codificata: <input type="text" size="96" id="codice_input" />
  445. <br><br>
  446. <button onClick="javascript:return decodifica(document.getElementById('codice_input').value)">Decodifica!</button>
  447. <br>
  448. <div id="stringa_da_decodificare">
  449. </div>
  450. <div id="stringa_decodificata">
  451. </div>
  452. <div id="errore_decodifica">
  453. </div>
  454.  
  455. </form>
  456.  
  457. </body>
  458. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement