Advertisement
Guest User

Doble XOR

a guest
Aug 21st, 2012
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.85 KB | None | 0 0
  1. <html>
  2. <head>
  3.     <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  4.     <title>Cifrario XOR con dos claves</title>
  5.     <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet">
  6.     <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
  7.     <script src="http://twitter.github.com/bootstrap/assets/js/jquery.js"></script>
  8.    
  9. </head>
  10. <body>
  11.  
  12.     <div class="container" style="width: 620px;">
  13.         <h1>Cifrario XOR con dos claves</h1>
  14.         <p>
  15.         Url del reto: <a href="http://www.kriptopolis.com/cifrario-xor">Kriptopolis</a> <br />
  16.         Reto propuesto por: <b>sqrmatrix</b> <br />
  17.         Script creado por: Jan Carreas - Copyright (C) 2012 - Licencia: <b>GPL3</b>
  18.         </p>
  19.  
  20.  
  21.         <form class="bs-docs-example">
  22.             <legend></legend>
  23.             <label>Clave par</label>
  24.             <input type="text" placeholder="Clave par" value="SANCHO" id="clave_par" class="enter"><br />
  25.  
  26.             <label>Clave impar</label>
  27.             <input type="text" placeholder="Clave impar" value="QUIJOTE" id="clave_impar" class="enter"> <br />
  28.  
  29.             <label>Texto cifrado</label>
  30.             <textarea rows="3" style="width: 620px;" id="texto_cifrado" class="enter">W:H:EVÑL.X;SCX_SAMLGOAKI</textarea> <br />
  31.  
  32.             <div class="form-actions">
  33.                 <button type="button" id="descifrar" class="btn btn-primary">Descifrar!</button>
  34.             </div>
  35.  
  36.  
  37.             <label>Texto descifrado</label>
  38.             <textarea class="uneditable-input" disabled=disabled rows="3" style="width: 620px; height: 80px;" id="texto_descifrado"></textarea> <br />
  39.  
  40.         </form>
  41.  
  42.     </div>
  43.        
  44.  
  45.     <script type="text/javascript">
  46.         ALPHA = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;"
  47.  
  48.         function texto_a_numero(texto) {
  49.             return texto.toUpperCase().split('').map(function(e) { return ALPHA.indexOf(e) });
  50.         }
  51.  
  52.         function numero_a_texto(numeros) {
  53.             return numeros.map(function(e) { return ALPHA[e] }).join("")
  54.         }
  55.  
  56.         function XOR2(texto_claro, clave_par, clave_impar) {
  57.             cifrado = texto_claro = texto_a_numero(texto_claro);
  58.             clave_par = texto_a_numero(clave_par);
  59.             clave_impar = texto_a_numero(clave_impar);
  60.  
  61.  
  62.             for( i=0; i<texto_claro.length; i++ ) {
  63.                 if ( i==0 )
  64.                     clave = clave_par;
  65.                 else
  66.                     clave = (cifrado[i-1] % 2 == 0) ? clave_par : clave_impar;
  67.  
  68.                 //console.log(numero_a_texto(clave));
  69.                 for (c=0; c<clave.length && i+c < texto_claro.length; c++)
  70.                     cifrado[i+c] = cifrado[i+c] ^ clave[c];
  71.                 //console.log(numero_a_texto(cifrado));
  72.             }
  73.             return numero_a_texto(cifrado);
  74.            
  75.         }
  76.  
  77.  
  78.         function fnx_descifrar() {
  79.             $('#texto_descifrado').get(0).value = XOR2(texto_cifrado.value, clave_par.value, clave_impar.value);
  80.         };
  81.  
  82.         $(document).ready(function () {
  83.             $('#descifrar').bind('click', fnx_descifrar);
  84.         });
  85.  
  86.         $('.enter').keypress(function(event) {
  87.             if ( event.which == 13 ) {
  88.                 fnx_descifrar();
  89.             }
  90.         });
  91.  
  92.    
  93.     </script>
  94.  
  95.    
  96. </body>
  97.  
  98. </html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement