Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
- <title>Cifrario XOR con dos claves</title>
- <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet">
- <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
- <script src="http://twitter.github.com/bootstrap/assets/js/jquery.js"></script>
- </head>
- <body>
- <div class="container" style="width: 620px;">
- <h1>Cifrario XOR con dos claves</h1>
- <p>
- Url del reto: <a href="http://www.kriptopolis.com/cifrario-xor">Kriptopolis</a> <br />
- Reto propuesto por: <b>sqrmatrix</b> <br />
- Script creado por: Jan Carreas - Copyright (C) 2012 - Licencia: <b>GPL3</b>
- </p>
- <form class="bs-docs-example">
- <legend></legend>
- <label>Clave par</label>
- <input type="text" placeholder="Clave par" value="SANCHO" id="clave_par" class="enter"><br />
- <label>Clave impar</label>
- <input type="text" placeholder="Clave impar" value="QUIJOTE" id="clave_impar" class="enter"> <br />
- <label>Texto cifrado</label>
- <textarea rows="3" style="width: 620px;" id="texto_cifrado" class="enter">W:H:EVÑL.X;SCX_SAMLGOAKI</textarea> <br />
- <div class="form-actions">
- <button type="button" id="descifrar" class="btn btn-primary">Descifrar!</button>
- </div>
- <label>Texto descifrado</label>
- <textarea class="uneditable-input" disabled=disabled rows="3" style="width: 620px; height: 80px;" id="texto_descifrado"></textarea> <br />
- </form>
- </div>
- <script type="text/javascript">
- ALPHA = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;"
- function texto_a_numero(texto) {
- return texto.toUpperCase().split('').map(function(e) { return ALPHA.indexOf(e) });
- }
- function numero_a_texto(numeros) {
- return numeros.map(function(e) { return ALPHA[e] }).join("")
- }
- function XOR2(texto_claro, clave_par, clave_impar) {
- cifrado = texto_claro = texto_a_numero(texto_claro);
- clave_par = texto_a_numero(clave_par);
- clave_impar = texto_a_numero(clave_impar);
- for( i=0; i<texto_claro.length; i++ ) {
- if ( i==0 )
- clave = clave_par;
- else
- clave = (cifrado[i-1] % 2 == 0) ? clave_par : clave_impar;
- //console.log(numero_a_texto(clave));
- for (c=0; c<clave.length && i+c < texto_claro.length; c++)
- cifrado[i+c] = cifrado[i+c] ^ clave[c];
- //console.log(numero_a_texto(cifrado));
- }
- return numero_a_texto(cifrado);
- }
- function fnx_descifrar() {
- $('#texto_descifrado').get(0).value = XOR2(texto_cifrado.value, clave_par.value, clave_impar.value);
- };
- $(document).ready(function () {
- $('#descifrar').bind('click', fnx_descifrar);
- });
- $('.enter').keypress(function(event) {
- if ( event.which == 13 ) {
- fnx_descifrar();
- }
- });
- </script>
- </body>
- </html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement