{"id":124,"date":"2022-11-19T17:41:38","date_gmt":"2022-11-19T17:41:38","guid":{"rendered":"http:\/\/javigomez.org\/?p=124"},"modified":"2025-09-29T20:34:30","modified_gmt":"2025-09-29T20:34:30","slug":"encriptacion-con-clave-simetrica-con-javascript","status":"publish","type":"post","link":"https:\/\/javigomez.org\/index.php\/2022\/11\/19\/encriptacion-con-clave-simetrica-con-javascript\/","title":{"rendered":"Encriptaci\u00f3n con clave sim\u00e9trica con Javascript"},"content":{"rendered":"\n<p>El siguiente art\u00edculo presenta dos maneras de realizar una encriptaci\u00f3n con clave sim\u00e9trica con Javascript. El primero es a trav\u00e9s de la librer\u00eda de crypto-js, la segunda, manualmente a trav\u00e9s de la operaci\u00f3n XOR.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Cripto-js<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2022\/11\/image-29-1-18-1.png\" alt=\"\" class=\"wp-image-125\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"en\">\n\n&lt;head>\n    &lt;meta charset=\"UTF-8\">\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    &lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/crypto-js\/3.1.2\/rollups\/aes.js\">&lt;\/script>\n    &lt;title>Encriptaci\u00f3n&lt;\/title>\n&lt;\/head>\n\n&lt;body>\n    &lt;h1>Encriptaci\u00f3n sim\u00e9trica con CRYPTO-JS&lt;\/h1>\n\n    Clave: &lt;input type=\"text\" id=\"key\">&lt;\/input>&lt;br>&lt;br>\n    &lt;label>Texto:&lt;\/label>&lt;br>\n    &lt;textarea id=\"tClaro\" rows=\"4\" cols=\"50\">&lt;\/textarea>\n    &lt;br>&lt;br>\n    &lt;label>Encriptado:&lt;\/label>&lt;br>\n    &lt;textarea id=\"tEncrip\" rows=\"4\" cols=\"50\">&lt;\/textarea>\n    &lt;br>&lt;br>\n    &lt;button onclick=\"encriptar()\">Encriptar&lt;\/button>\n    &lt;button onclick=\"desencriptar()\">Desencriptar&lt;\/button>\n\n    &lt;p id=\"array\">&lt;\/p>\n\n    &lt;p id=\"resultado\">&lt;\/p>\n\n    &lt;script>\n        function encriptar() {\n            var txtClave = document.getElementById(\"key\").value;\n            var txtClaro = document.getElementById(\"tClaro\").value;\n            var txtEncriptado = CryptoJS.AES.encrypt(txtClaro, txtClave);\n            document.getElementById(\"tEncrip\").value = txtEncriptado;\n        }\n\n        function desencriptar() {\n            var txtClave = document.getElementById(\"key\").value;\n            var txtEncriptado = document.getElementById(\"tEncrip\").value;\n            var txtDesencrip = CryptoJS.AES.decrypt(txtEncriptado, txtClave).toString(CryptoJS.enc.Utf8);\n            document.getElementById(\"tClaro\").value = txtDesencrip;\n        }\n\n    &lt;\/script>\n&lt;\/body>\n&lt;\/html><\/code><\/pre>\n\n\n\n<p>2. Encriptaci\u00f3n sim\u00e9trica manual con XOR<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2022\/11\/image-29-1-19-1.png\" alt=\"\" class=\"wp-image-126\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"en\">\n&lt;head>\n    &lt;meta charset=\"UTF-8\">\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    &lt;title>Encriptado\/Desencriptador Xor en Javascript&lt;\/title>\n    &lt;script language=\"Javascript\" type=\"text\/javascript\">\n        \/\/ ---------------------------------------------------------------------------------------------------------------------------------------------------\n        \/*\n        * var txtEncriptado = EncDesenc('txt', 'Clave');\n        * var txtDescencriptado = EncDesenc('%049%22%2C%22%25*%27', 'Clave');\n        * Operaci\u00f3n XOR  (Si son iguales el resultado es 0, si son diferentes el resultado es 1)\n        * 0 XOR 0 = 0; 0 XOR 1 = 1; 1 XOR 0 = 1; 1 XOR 1 = 0\n        *\/\n        function EncDesenc(pstxt, psClave)\n        {\n            pstxt = unescape(pstxt);\n            var sDesti = '';\n            var ltxt = pstxt.length;\n            var lClave = psClave.length;\n            \n\n            for (var itxt=0; itxt&lt;ltxt; itxt++)\n            {\n                var ctxt = pstxt.charCodeAt(itxt);\n                var cClave = psClave.charCodeAt(itxt % lClave);\n                var cDestination = ctxt ^ cClave;\n                sDesti += String.fromCharCode(cDestination);\n            }\n            return(escape(sDesti));\n        }\n\n    &lt;\/script>\n&lt;\/head>\n&lt;body>\n    &lt;body>\n        &lt;table>\n            &lt;tr>\n                &lt;td>&lt;b>Texto en claro: &lt;\/b>&lt;br\/>&lt;textarea id=\"txtOriginal\" cols=\"80\" rows=\"4\">&lt;\/textarea>&lt;\/td>\n            &lt;\/tr>\n            &lt;tr>\n                &lt;td>&lt;b>Clave: &lt;\/b>&lt;br\/>&lt;input id=\"txtClave\" id=\"key\">&lt;\/input>\n            &lt;\/tr>\n            &lt;tr>\n                &lt;td>&lt;b>Texto encriptado: &lt;\/b>&lt;br\/>&lt;textarea id=\"txtResult\" cols=\"80\" rows=\"4\">&lt;\/textarea>&lt;\/td>\n            &lt;\/tr>\n            &lt;tr>\n                &lt;td>&lt;button onclick=\"encr()\">Encriptaci\u00f3n&lt;\/button>\n                &lt;button onclick=\"desencr()\">Desencriptaci\u00f3n&lt;\/button>&lt;\/td>\n            &lt;\/tr>\n        &lt;\/table>\n        \n        &lt;script>\n            function desencr(){\n                var tClave=document.getElementById(\"txtClave\").value;\n                var tResult=document.getElementById(\"txtResult\").value;\n                var res=EncDesenc(tResult,tClave);\n                var res=res.replace(\/%20\/g,\" \");\n                var res=res.replace(\/%F1\/g,\"\u00f1\");\n                var res=res.replace(\/%D1\/g,\"\u00d1\");\n                var res=res.replace(\/%E1\/g,\"\u00e1\");\n                var res=res.replace(\/%E9\/g,\"\u00e9\");\n                var res=res.replace(\/%ED\/g,\"\u00ed\");\n                var res=res.replace(\/%F3\/g,\"\u00f3\");\n                var res=res.replace(\/%FA\/g,\"\u00fa\");\n                var res=res.replace(\/%C1\/g,\"\u00c1\");\n                var res=res.replace(\/%C9\/g,\"\u00c9\");\n                var res=res.replace(\/%CD\/g,\"\u00cd\");\n                var res=res.replace(\/%D3\/g,\"\u00d3\");\n                var res=res.replace(\/%DA\/g,\"\u00da\");\n                document.getElementById(\"txtOriginal\").value=res;\n            }\n\n            function encr(){\n                var tClave=document.getElementById(\"txtClave\").value;\n                var tOrigen=document.getElementById(\"txtOriginal\").value;\n                document.getElementById(\"txtResult\").value=EncDesenc(tOrigen,tClave);\n                \n}\n\n        &lt;\/script>\n&lt;\/body>\n&lt;\/html>\n&lt;html><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El siguiente art\u00edculo presenta dos maneras de realizar una encriptaci\u00f3n con clave sim\u00e9trica con Javascript. El primero es a trav\u00e9s de la librer\u00eda de crypto-js, &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[82,105,131,204],"class_list":["post-124","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-clave-simetrica","tag-cryptojs","tag-encriptacion","tag-javascript"],"_links":{"self":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":1,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"predecessor-version":[{"id":984,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts\/124\/revisions\/984"}],"wp:attachment":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/tags?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}