1window.HDTools_hash=function(){return`\n ${HDTools.renderBreadcrumbs("Gerador de Hash")}\n <div class="hd-tool">\n <div class="hd-tool__header">\n <h2>Gerador de Hash</h2>\n <p>Gere hashes criptográficos usando SHA-256, SHA-384 ou SHA-512</p>\n </div>\n <div class="hd-tool__body">\n <div class="hd-form-group">\n <label class="hd-label">Texto para gerar hash</label>\n <textarea id="hash-input" class="hd-textarea" rows="6" placeholder="Digite o texto aqui..."></textarea>\n </div>\n\n <div class="hd-form-group">\n <label class="hd-label">Algoritmo</label>\n <select id="hash-algorithm" class="hd-select">\n <option value="SHA-256">SHA-256</option>\n <option value="SHA-384">SHA-384</option>\n <option value="SHA-512">SHA-512</option>\n </select>\n </div>\n\n <button onclick="HDTools_hash_generate()" class="hd-button">Gerar Hash</button>\n\n <div id="hash-results"></div>\n </div>\n </div>\n `},window.HDTools_hash_init=function(){},window.HDTools_hash_generate=async function(){const input=document.getElementById("hash-input").value,algorithm=document.getElementById("hash-algorithm").value;if(input)try{const data=(new TextEncoder).encode(input),hashBuffer=await crypto.subtle.digest(algorithm,data),hashHex=Array.from(new Uint8Array(hashBuffer)).map(b=>b.toString(16).padStart(2,"0")).join(""),resultHTML=`\n <div class="hd-card" style="margin-top: 1rem;">\n <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem;">\n <h3 class="hd-card__title" style="margin: 0;">Hash ${algorithm}</h3>\n <button onclick="HDTools_hash_copy('${hashHex}')" class="hd-button hd-button--sm">Copiar</button>\n </div>\n <div class="hd-code hd-code--light" style="word-break: break-all;">${hashHex}</div>\n <div style="margin-top: 1rem; display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem;">\n <div class="hd-kv">\n <span class="hd-kv__label">Algoritmo:</span>\n <span class="hd-kv__value">${algorithm}</span>\n </div>\n <div class="hd-kv">\n <span class="hd-kv__label">Comprimento:</span>\n <span class="hd-kv__value">${hashHex.length} caracteres</span>\n </div>\n </div>\n </div>\n `;document.getElementById("hash-results").innerHTML=resultHTML}catch(error){window.showToast("Erro ao gerar hash: "+error.message,"error")}else window.showToast("Digite algum texto para gerar o hash","error")},window.HDTools_hash_copy=function(hash){navigator.clipboard.writeText(hash).then(()=>{window.showToast("Hash copiado para área de transferência!","success")}).catch(()=>{window.showToast("Erro ao copiar","error")})}; 2//# sourceURL=https://7916605.fs1.hubspotusercontent-na1.net/hubfs/7916605/hub_generated/template_assets/1/199828177677/1790082898005/template_tools-hash.js
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.