{"id":1643,"date":"2023-02-17T06:20:37","date_gmt":"2023-02-17T06:20:37","guid":{"rendered":"https:\/\/www.tools.keywordfinder.us\/?page_id=1643"},"modified":"2023-02-17T06:20:37","modified_gmt":"2023-02-17T06:20:37","slug":"aes-cypher-encrypt-decrypt","status":"publish","type":"page","link":"https:\/\/tools.billionsideas.com\/de\/aes-cypher-encrypt-decrypt\/","title":{"rendered":"AES Cypher Encrypt Decrypt"},"content":{"rendered":"<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column has-base-3-background-color has-background is-layout-flow wp-block-column-is-layout-flow\">\n<section><div class=\"container\"> \n   <h1>Cypher Text Encrypt\/Decrypt<\/h1><br>\n  <div class=\"forms\">\n    <div class=\"formContainer encrypt\"> \n     <form method=\"post\" action=\"\">\n        <b>Text:<\/b><br><input name=\"string\" required=\"\" type=\"text\"><br>\n<br>\n        <b>Password:<\/b><br><input name=\"password\" required=\"\" type=\"password\"><br>\n<br>\n        <input type=\"submit\"><br>\n     <input type=\"hidden\" name=\"trp-form-language\" value=\"de\"\/><\/form> \n    <\/div><br>\n\n    <div class=\"formContainer decrypt\"> \n      <form method=\"post\" action=\"\">\n        <b>Encrypted Text:<\/b><br><input name=\"string\" style=\"font-weight: 700\"><br>\n<br>\n\t\t<b>Password:<\/b><br><input name=\"password\" required=\"\" type=\"password\"><br>\n<br>\n        <input type=\"submit\"><br>\n      <input type=\"hidden\" name=\"trp-form-language\" value=\"de\"\/><\/form>\n    <\/div>\n  <\/div>\n<br>\n  <div class=\"result\">\n    <b>Output: \n<\/b>    <p class=\"resultContent\"><\/p><br><br>\n  <\/div>\n<\/section>\n<style>\nsection{\n         margin-top:60px;\n        width: 100%;\n        max-width: 970px;\n        background-color: #fff;\n        border: 1px solid #ddd;\n        padding: 25px;\n      }\nbody{text-align:center}\n\n\/* Button Styles *\/\nbutton, .button, #button, btn, .btn, #btn, downloadlink,  #download-button, #button-copy, button-copy, copy-button, #copy-button, #copy, copy{\n  display: inline-block;\n  padding: 12px 24px;\n  font-size: 16px;\n  font-weight: 500;\n  color: #ffffff;\n  text-transform: uppercase;\n  text-decoration: none;\n  text-align: center;\n  border-radius: 30px;\n  background-image: linear-gradient(to right, #0088FF, #0088FF);\n  border: 3px solid #fff;\n  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\n  transition: all 0.3s ease;\n  margin:0 auto;\n  margin-top:11px;\n  margin-bottom:11px;\n  text-shadow: 2px 2px 4px #333;\n}\n\n\/* Button Hover State *\/\nbutton:hover {\n  background-image: linear-gradient(to right, #FF1493, #FF1493);\n  border: 3px solid #ffffff;\n  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\n}\n\n -input{\n  width: 25%;\n  height: 100%;\n  padding: 5px;\n  font-size: 16px;\n  font-family: Arial, sans-serif;\n  border: 2px solid;\n  border-image: linear-gradient(to right, #06c, #f90) 1;\n  border-radius: 5px;\n  box-shadow: 2px 2px 5px #ccc;\n  transition: all 0.2s ease-in-out;\n  margin-top:10px;margin-bottom:10px;\n  margin:0 auto;\n}\n\ninput[type=file]::file-selector-button {\n  display: inline-block;\n  padding: 1.0rem 1rem;\n  font-size: 1.125rem;\n  font-weight: bold;\n  color: #fff;\n  text-align: center;\n  text-transform: uppercase;\n  background-color: #0088FF;\n  border-radius: 0rem;\n  cursor: pointer;\n  transition: background-color 0.2s ease-in-out;\n  border: 0px solid #fff;\n  width:100%;\n  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\n}\n\ninput[type=file]::file-selector-button:hover {\n  background-color: #5b52d6;\n}\n\ninput[type=file]::file-selector-button:active {\n  background-color: #4a41ad;\n}\n\ninput[type=file]::file-selector-button:focus {\n  outline: none;\n  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #6c63ff;\n}\n\ninput[type=file]::file-selector-button::before {\n  content: \"Select File\";\n}\n\ninput[type=file]::file-selector-button::before,\ninput[type=file]::file-selector-button::before {\n  content: \"\\2193 Browse Files\";\n}\n\n\ninput[type=\"file\"] {\n  display: yes;\n}\ninput[type=\"text\"], input[type=\"url\"] {\n  width: 80%;\n  height: 50px;\n  padding: 5px;\n  font-size: 16px;\n  font-family: Arial, sans-serif;\n  border: 2px solid;\n  border-image: linear-gradient(to right, #06c, #f90) 1;\n  border-radius: 5px;\n  box-shadow: 2px 2px 5px #ccc;\n  transition: all 0.2s ease-in-out;\n  margin-top:10px;margin-bottom:10px;\n  margin:0 auto;\n}\ninput[type=\"number\"], select {\n  width: 30%;\n  height: 50px;\n  padding: 5px;\n  font-size: 16px;\n  font-family: Arial, sans-serif;\n  border: 2px solid;\n  border-image: linear-gradient(to right, #06c, #f90) 1;\n  border-radius: 5px;\n  box-shadow: 2px 2px 5px #ccc;\n  transition: all 0.2s ease-in-out;\n  margin-top:10px;margin-bottom:10px;\n  margin:0 auto;\n}\n\ntextarea {\n  width: 90%;\n  height: 170px;\n  padding: 10px;\n  font-size: 16px;\n  font-family: Arial, sans-serif;\n  border: 2px solid;\n  border-image: linear-gradient(to right, #06c, #f90) 1;\n  border-radius: 5px;\n  box-shadow: 2px 2px 5px #ccc, -2px -2px 5px #ccc;  \n  transition: all 0.2s ease-in-out;\n  margin-top:10px;margin-bottom:10px;\n  margin:0 auto;\n}\n\ntextarea:hover {\n  border-color: #06c;\n  box-shadow: 2px 2px 10px #06c;\n}\n\ntextarea:focus {\n  outline: none;\n  border-color: #06c;\n  box-shadow: 2px 2px 10px #06c;\n}\n\ncanvas, #image-container, .img, #img, image, .image, #image, #convertedImage, #preview-image {\n  border: 5px solid;\n  border-image: linear-gradient(to bottom, #007bff, #00f260);\n  border-image-slice: 1;\n  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);\n  margin-top:10px;margin-bottom:10px;\n  width:90%;\n  margin:0 auto;padding:15px;\n\n}\n\n#image-container img {\n  max-width: 100%;\n  }\n\ncode, pre, .result, output, #output, .output {\n  font-family: Monaco, Consolas, \"Andale Mono\", \"DejaVu Sans Mono\", monospace;\n  font-size: 0.9em;\n  color: #333;\n  background-color: #f9f9f9;\n  padding: 0.2em 0.4em;\n  border: 2px solid;\n  border-image: linear-gradient(to right, #06c, #f90) 1;\n  border-radius: 5px;\n  box-shadow: 2px 2px 5px #ccc, -2px -2px 5px #ccc;  \n  transition: all 0.2s ease-in-out;\n  white-space: pre-wrap;\n  margin-top:10px;margin-bottom:10px;\n  margin:0 auto;\n  width:90%;\n  padding:15px;\n\n}\n\n\ninput[type=\"range\"] {\n  -webkit-appearance: none;\n  width: 80%;\n  background: transparent;\n  height: 10px;\n  border-radius: 5px;\n  outline: none;\n  padding: 0;\n  margin: 0;\n  box-shadow: inset 0 0 5px #333;\n  transition: box-shadow 0.2s;\n  margin-top:10px;\n\n}\n\ninput[type=\"range\"]:focus {\n  box-shadow: inset 0 0 5px #888;\n}\n\ninput[type=\"range\"]::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  height: 20px;\n  width: 20px;\n  border-radius: 50%;\n  background: #4CAF50;\n  cursor: pointer;\n  transition: background 0.2s;\n  margin-top:-5px;\n}\n\ninput[type=\"range\"]::-webkit-slider-thumb:hover {\n  background: #3e8e41;\n}\n\ninput[type=\"range\"]::-webkit-slider-runnable-track {\n  height: 10px;\n  background: #ddd;\n  border-radius: 5px;\n  border: none;\n}\ninput[type=\"checkbox\"] {\n  appearance: none;\n  width: 45px;\n  height: 25px;\n  background: transparent;\n  border: 2px solid;\n  border-image: linear-gradient(to right, #06c, #f90) 1;  border-radius: 5px;\n  margin: 10px;\n  outline: none;\n  cursor: pointer;\n  position: relative;\n}\n\ninput[type=\"checkbox\"]:before {\n  content: \"\";\n  width: 15px;\n  height: 15px;\n  background: #D209A4;\n  border-radius: 100px;\n  position: absolute;\n  left: 2px;\n  \n  top: 3px;\n  transition: all 0.2s;\n}\n\ninput[type=\"checkbox\"]:checked:before {\n  transform: translateX(20px);\n}\n\ninput[type=\"checkbox\"]:focus {\n  border: 2px solid #888;\n}\ninput[type=\"radio\"] {\n  appearance: none;\n  width: 20px;\n  height: 20px;\n  border-radius: 50%;\n  border: 2px solid #333;\n  margin-right: 10px;\n  outline: none;\n  position: relative;\n  cursor: pointer;\n}\n\ninput[type=\"radio\"]:after {\n  content: \"\";\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  background: #333;\n  position: absolute;\n  top: 5px;\n  left: 5px;\n  opacity: 0;\n  transition: all 0.2s;\n}\n\ninput[type=\"radio\"]:checked:after {\n  opacity: 1;\n}\n\ninput[type=\"radio\"]:focus {\n  border-color: #888;\n}\n\n\ninput[type=\"radio\"] {\n  display: inline-block;\n  margin-right: 10px;\n  vertical-align: middle;\n}\n\nlabel {\n  display: block; \/* makes each label appear on a new line *\/\n  font-size: 16px;\n  font-weight: bold;\n  margin-bottom: 5px; \/* adds a small gap below each label *\/\n  color:#55555e;\n  margin-top:11px;margin-bottom:11px;\n}\n\ninput[type=\"color\"]{width:17.2%;}\n.form-control {\n    display: block;\n    margin:0 auto;\n    width: 70%;\n    padding: 0.375rem 0.75rem;\n    font-size: 1rem;\n    font-weight: 400;\n    line-height: 1.5;\n    color: #212529;\n    background-color: #fff;\n    background-clip: padding-box;\n    border: 1px solid #ced4da;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    border-radius: 0.25rem;\n    transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n}\n\n\n<\/style>\n\n\n<script>\nconst aesGcmEncrypt = async function (plaintext, password) {\n  try {\n    const pwUtf8 = new TextEncoder().encode(password);\n    const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8);\n    const iv = crypto.getRandomValues(new Uint8Array(12));\n    const alg = { name: 'AES-GCM', iv: iv };\n    const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['encrypt']);\n    const ptUint8 = new TextEncoder().encode(plaintext);\n    const ctBuffer = await crypto.subtle.encrypt(alg, key, ptUint8);\n    const ctArray = Array.from(new Uint8Array(ctBuffer));\n    const ctStr = ctArray.map(byte => String.fromCharCode(byte)).join('');\n    const ctBase64 = btoa(ctStr);\n    const ivHex = Array.from(iv).map(b => ('00' + b.toString(16)).slice(-2)).join('');\n    return ivHex + ctBase64;\n  } catch (err) { }\n} \/\/func aesGcmEncrypt\n\nconst aesGcmDecrypt = async function (ciphertext, password) {\n  try {\n    const pwUtf8 = new TextEncoder().encode(password);\n    const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8);\n    const iv = ciphertext.slice(0, 24).match(\/.{2}\/g).map(byte => parseInt(byte, 16));\n    const alg = { name: 'AES-GCM', iv: new Uint8Array(iv) };\n    const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']);\n    const ctStr = atob(ciphertext.slice(24));\n    const ctUint8 = new Uint8Array(ctStr.match(\/[\\s\\S]\/g).map(ch => ch.charCodeAt(0)));\n    const plainBuffer = await crypto.subtle.decrypt(alg, key, ctUint8);\n    const plaintext = new TextDecoder().decode(plainBuffer);\n    return plaintext;\n  } catch (err) { } \n} \/\/func aesGcmDecrypt\n\n\n\/\/Decrypt and Encrypt\n  const $result = document.querySelector('.result .resultContent');\n  const errorMsg = \"WHoops, something went wrong\";\n\n  document.querySelector('.encrypt form').addEventListener('submit', async (event) => { \n   event.preventDefault();\n    try {\n      const text = event.target[0].value; \n      const pass = event.target[1].value; \n\n      console.log(text,pass);\n    \n      const result = await aesGcmEncrypt(text, pass);\n\n      $result.innerHTML = result ? result : errorMsg;\n\n      console.log(result);\n\n    } catch(e) {\n      $result.innerHTML = errorMsg\n    } \n  });\n\n  document.querySelector('.decrypt form').addEventListener('submit', async (event) => { \n   event.preventDefault();\n    try {\n      const text = event.target[0].value; \n      const pass = event.target[1].value; \n\n    \n      const result = await aesGcmDecrypt(text, pass);\n      $result.innerHTML = result ? result : errorMsg;\n\n     console.log(result);\n\n    } catch(e) {\n      $result.innerHTML = errorMsg;k\n    } \n  });\n\n\n\/\/ Random stuff\n  const passwordFields = document.querySelectorAll('input[type=\"password\"]')\n  for(let passwordField of passwordFields) {\n    passwordField.addEventListener('mouseover', function() {\n      this.type = 'text';\n    });\n    passwordField.addEventListener('mouseout', function() {\n      this.type = 'password';\n    });\n  }\n<\/script>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Cypher Text Encrypt\/Decrypt Text: Password: Encrypted Text: Password: Output:<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","footnotes":""},"class_list":["post-1643","page","type-page","status-publish"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"Billions Ideas","author_link":"https:\/\/tools.billionsideas.com\/de\/author\/loginbillionsideas-com\/"},"comment_info":0,"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/pages\/1643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/comments?post=1643"}],"version-history":[{"count":0,"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/pages\/1643\/revisions"}],"wp:attachment":[{"href":"https:\/\/tools.billionsideas.com\/de\/wp-json\/wp\/v2\/media?parent=1643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}