{"id":557,"date":"2026-07-20T14:50:57","date_gmt":"2026-07-20T14:50:57","guid":{"rendered":"https:\/\/freewebtools.co.in\/?page_id=557"},"modified":"2026-07-28T16:35:03","modified_gmt":"2026-07-28T16:35:03","slug":"hashing-tool","status":"publish","type":"page","link":"https:\/\/freewebtools.co.in\/index.php\/hashing-tool\/","title":{"rendered":"Hashing tool"},"content":{"rendered":"\n<!-- Scope wrapper to avoid CSS leaks into WordPress -->\n<div id=\"hash-tool-wrapper\" class=\"hash-tool-container\">\n  \n  <!-- Header \/ Controls -->\n  <header class=\"hash-tool-header\">\n    <h2 class=\"hash-tool-title\">Hash Generator &amp; Verifier<\/h2>\n    <button id=\"themeToggleBtn\" class=\"hash-btn hash-btn-secondary\" aria-label=\"Toggle Theme\">\n      <span class=\"theme-icon\">\ud83c\udf19<\/span> <span class=\"theme-text\">Dark Mode<\/span>\n    <\/button>\n  <\/header>\n\n  <!-- Input Section -->\n  <section class=\"hash-card\">\n    <div class=\"hash-form-group\">\n      <label for=\"hashInputText\" class=\"hash-label\">Enter Text \/ Data:<\/label>\n      <textarea id=\"hashInputText\" class=\"hash-textarea\" rows=\"4\" placeholder=\"Type or paste text here...\"><\/textarea>\n    <\/div>\n\n    <!-- Drag & Drop Zone -->\n    <div id=\"dropZone\" class=\"hash-dropzone\">\n      <p>\ud83d\udcc1 Drag &amp; Drop a file here, or click to select<\/p>\n      <input type=\"file\" id=\"fileInput\" class=\"hash-file-input\">\n      <div id=\"progressContainer\" class=\"hash-progress-container hidden\">\n        <div id=\"progressBar\" class=\"hash-progress-bar\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"hash-btn-group\">\n      <button id=\"generateBtn\" class=\"hash-btn hash-btn-primary\">Generate Hashes<\/button>\n      <button id=\"clearBtn\" class=\"hash-btn hash-btn-outline\">Clear All<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Output Section -->\n  <section class=\"hash-card\">\n    <h3 class=\"hash-subtitle\">Generated Hashes<\/h3>\n    <div class=\"hash-table-responsive\">\n      <table class=\"hash-table\">\n        <thead>\n          <tr>\n            <th>Algorithm<\/th>\n            <th>Hash Output<\/th>\n            <th>Actions<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td><strong>MD5<\/strong><\/td>\n            <td><code id=\"outMd5\" class=\"hash-code-out\">---<\/code><\/td>\n            <td>\n              <button class=\"hash-btn-sm copy-btn\" data-target=\"outMd5\">Copy<\/button>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td><strong>SHA-1<\/strong><\/td>\n            <td><code id=\"outSha1\" class=\"hash-code-out\">---<\/code><\/td>\n            <td>\n              <button class=\"hash-btn-sm copy-btn\" data-target=\"outSha1\">Copy<\/button>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td><strong>SHA-256<\/strong><\/td>\n            <td><code id=\"outSha256\" class=\"hash-code-out\">---<\/code><\/td>\n            <td>\n              <button class=\"hash-btn-sm copy-btn\" data-target=\"outSha256\">Copy<\/button>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td><strong>SHA-512<\/strong><\/td>\n            <td><code id=\"outSha512\" class=\"hash-code-out\">---<\/code><\/td>\n            <td>\n              <button class=\"hash-btn-sm copy-btn\" data-target=\"outSha512\">Copy<\/button>\n            <\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n    <div class=\"hash-btn-group\" style=\"margin-top: 1rem;\">\n      <button id=\"downloadBtn\" class=\"hash-btn hash-btn-secondary\">Download Hashes (.txt)<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Compare \/ Verify Section -->\n  <section class=\"hash-card\">\n    <h3 class=\"hash-subtitle\">Verify \/ Compare Hash<\/h3>\n    <div class=\"hash-form-group\">\n      <label for=\"compareInput\" class=\"hash-label\">Expected Hash:<\/label>\n      <input type=\"text\" id=\"compareInput\" class=\"hash-input\" placeholder=\"Paste hash to compare...\">\n    <\/div>\n    <button id=\"compareBtn\" class=\"hash-btn hash-btn-primary\">Compare<\/button>\n    <div id=\"compareResult\" class=\"hash-alert hidden\"><\/div>\n  <\/section>\n\n<\/div>\n\n<!-- Scoped Stylesheet -->\n<style>\n#hash-tool-wrapper {\n  --ht-bg-primary: #ffffff;\n  --ht-bg-secondary: #f8f9fa;\n  --ht-bg-card: #ffffff;\n  --ht-text-primary: #212529;\n  --ht-text-secondary: #6c757d;\n  --ht-border: #dee2e6;\n  --ht-accent: #0d6efd;\n  --ht-accent-hover: #0b5ed7;\n  --ht-success: #198754;\n  --ht-danger: #dc3545;\n  --ht-code-bg: #f1f3f5;\n  --ht-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n\n  font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n  color: var(--ht-text-primary);\n  background-color: var(--ht-bg-secondary);\n  padding: 1.5rem;\n  border-radius: 12px;\n  box-shadow: var(--ht-shadow);\n  max-width: 100%;\n  box-sizing: border-box;\n  transition: background-color 0.2s ease, color 0.2s ease;\n}\n\n#hash-tool-wrapper.dark-theme {\n  --ht-bg-primary: #1e1e2e;\n  --ht-bg-secondary: #121218;\n  --ht-bg-card: #1e1e2e;\n  --ht-text-primary: #f8f9fa;\n  --ht-text-secondary: #a0a0a0;\n  --ht-border: #333344;\n  --ht-accent: #3b82f6;\n  --ht-accent-hover: #2563eb;\n  --ht-code-bg: #2a2a3c;\n  --ht-shadow: 0 4px 10px rgba(0, 0, 0, 0.4);\n}\n\n#hash-tool-wrapper *,\n#hash-tool-wrapper *::before,\n#hash-tool-wrapper *::after {\n  box-sizing: border-box;\n}\n\n.hash-tool-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 1.5rem;\n  flex-wrap: wrap;\n  gap: 1rem;\n}\n\n.hash-tool-title {\n  margin: 0;\n  font-size: 1.5rem;\n  color: var(--ht-text-primary);\n}\n\n.hash-card {\n  background-color: var(--ht-bg-card);\n  border: 1px solid var(--ht-border);\n  border-radius: 8px;\n  padding: 1.25rem;\n  margin-bottom: 1.25rem;\n  box-shadow: var(--ht-shadow);\n}\n\n.hash-subtitle {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  font-size: 1.2rem;\n  color: var(--ht-text-primary);\n}\n\n.hash-form-group {\n  margin-bottom: 1rem;\n}\n\n.hash-label {\n  display: block;\n  margin-bottom: 0.5rem;\n  font-weight: 600;\n  color: var(--ht-text-primary);\n}\n\n.hash-textarea,\n.hash-input {\n  width: 100%;\n  padding: 0.75rem;\n  border: 1px solid var(--ht-border);\n  border-radius: 6px;\n  background-color: var(--ht-bg-primary);\n  color: var(--ht-text-primary);\n  font-family: inherit;\n  font-size: 0.95rem;\n  transition: border-color 0.15s ease-in-out;\n}\n\n.hash-textarea:focus,\n.hash-input:focus {\n  outline: none;\n  border-color: var(--ht-accent);\n}\n\n.hash-dropzone {\n  border: 2px dashed var(--ht-border);\n  border-radius: 8px;\n  padding: 1.5rem;\n  text-align: center;\n  cursor: pointer;\n  background-color: var(--ht-bg-primary);\n  margin-bottom: 1rem;\n  transition: border-color 0.2s ease;\n}\n\n.hash-dropzone:hover {\n  border-color: var(--ht-accent);\n}\n\n.hash-file-input {\n  display: none;\n}\n\n.hash-progress-container {\n  width: 100%;\n  height: 8px;\n  background-color: var(--ht-border);\n  border-radius: 4px;\n  overflow: hidden;\n  margin-top: 0.75rem;\n}\n\n.hash-progress-bar {\n  width: 0%;\n  height: 100%;\n  background-color: var(--ht-accent);\n  transition: width 0.2s ease;\n}\n\n.hash-btn-group {\n  display: flex;\n  gap: 0.75rem;\n  flex-wrap: wrap;\n}\n\n.hash-btn {\n  padding: 0.6rem 1.2rem;\n  border-radius: 6px;\n  border: 1px solid transparent;\n  font-weight: 600;\n  cursor: pointer;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  transition: background-color 0.2s, border-color 0.2s;\n  font-size: 0.9rem;\n}\n\n.hash-btn-primary {\n  background-color: var(--ht-accent);\n  color: #ffffff;\n}\n\n.hash-btn-primary:hover {\n  background-color: var(--ht-accent-hover);\n}\n\n.hash-btn-secondary {\n  background-color: var(--ht-bg-primary);\n  color: var(--ht-text-primary);\n  border-color: var(--ht-border);\n}\n\n.hash-btn-secondary:hover {\n  background-color: var(--ht-code-bg);\n}\n\n.hash-btn-outline {\n  background-color: transparent;\n  color: var(--ht-danger);\n  border-color: var(--ht-danger);\n}\n\n.hash-btn-outline:hover {\n  background-color: var(--ht-danger);\n  color: #ffffff;\n}\n\n.hash-btn-sm {\n  padding: 0.3rem 0.6rem;\n  font-size: 0.8rem;\n  border-radius: 4px;\n  border: 1px solid var(--ht-border);\n  background-color: var(--ht-bg-primary);\n  color: var(--ht-text-primary);\n  cursor: pointer;\n}\n\n.hash-btn-sm:hover {\n  background-color: var(--ht-accent);\n  color: #ffffff;\n}\n\n.hash-table-responsive {\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n.hash-table {\n  width: 100%;\n  border-collapse: collapse;\n  text-align: left;\n}\n\n.hash-table th,\n.hash-table td {\n  padding: 0.75rem;\n  border-bottom: 1px solid var(--ht-border);\n  vertical-align: middle;\n}\n\n.hash-table th {\n  color: var(--ht-text-secondary);\n  font-size: 0.85rem;\n  text-transform: uppercase;\n}\n\n.hash-code-out {\n  display: block;\n  font-family: monospace;\n  background-color: var(--ht-code-bg);\n  padding: 0.4rem 0.6rem;\n  border-radius: 4px;\n  color: var(--ht-text-primary);\n  word-break: break-all;\n  font-size: 0.85rem;\n  max-width: 100%;\n}\n\n.hash-alert {\n  padding: 0.75rem 1rem;\n  border-radius: 6px;\n  margin-top: 1rem;\n  font-weight: 500;\n  font-size: 0.9rem;\n}\n\n.hash-alert-success {\n  background-color: rgba(25, 135, 84, 0.15);\n  color: var(--ht-success);\n  border: 1px solid var(--ht-success);\n}\n\n.hash-alert-danger {\n  background-color: rgba(220, 53, 69, 0.15);\n  color: var(--ht-danger);\n  border: 1px solid var(--ht-danger);\n}\n\n.hidden {\n  display: none !important;\n}\n\n@media (max-width: 576px) {\n  #hash-tool-wrapper {\n    padding: 1rem;\n  }\n  .hash-btn-group {\n    flex-direction: column;\n    width: 100%;\n  }\n  .hash-btn {\n    width: 100%;\n  }\n  .hash-table th, \n  .hash-table td {\n    padding: 0.5rem;\n  }\n}\n<\/style>\n\n<!-- Scoped JavaScript (IIFE) -->\n<script>\n(function () {\n  'use strict';\n\n  if (window.HashToolInitialized) return;\n  window.HashToolInitialized = true;\n\n  document.addEventListener('DOMContentLoaded', function () {\n    const wrapper = document.getElementById('hash-tool-wrapper');\n    if (!wrapper) return;\n\n    const themeBtn = wrapper.querySelector('#themeToggleBtn');\n    const themeIcon = themeBtn.querySelector('.theme-icon');\n    const themeText = themeBtn.querySelector('.theme-text');\n    const inputText = wrapper.querySelector('#hashInputText');\n    const dropZone = wrapper.querySelector('#dropZone');\n    const fileInput = wrapper.querySelector('#fileInput');\n    const generateBtn = wrapper.querySelector('#generateBtn');\n    const clearBtn = wrapper.querySelector('#clearBtn');\n    const downloadBtn = wrapper.querySelector('#downloadBtn');\n    const compareInput = wrapper.querySelector('#compareInput');\n    const compareBtn = wrapper.querySelector('#compareBtn');\n    const compareResult = wrapper.querySelector('#compareResult');\n\n    const outMd5 = wrapper.querySelector('#outMd5');\n    const outSha1 = wrapper.querySelector('#outSha1');\n    const outSha256 = wrapper.querySelector('#outSha256');\n    const outSha512 = wrapper.querySelector('#outSha512');\n\n    \/\/ Theme Logic\n    function applyTheme(isDark) {\n      if (isDark) {\n        wrapper.classList.add('dark-theme');\n        themeIcon.textContent = '\u2600\ufe0f';\n        themeText.textContent = 'Light Mode';\n      } else {\n        wrapper.classList.remove('dark-theme');\n        themeIcon.textContent = '\ud83c\udf19';\n        themeText.textContent = 'Dark Mode';\n      }\n    }\n\n    const savedTheme = localStorage.getItem('hash_tool_theme');\n    const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n    applyTheme(savedTheme ? savedTheme === 'dark' : prefersDark);\n\n    themeBtn.addEventListener('click', function () {\n      const isCurrentlyDark = wrapper.classList.contains('dark-theme');\n      const nextDark = !isCurrentlyDark;\n      applyTheme(nextDark);\n      localStorage.setItem('hash_tool_theme', nextDark ? 'dark' : 'light');\n    });\n\n    \/\/ Native Web Crypto API Handler for SHA algorithms\n    async function cryptoHash(algorithm, dataBuffer) {\n      try {\n        const hashBuffer = await crypto.subtle.digest(algorithm, dataBuffer);\n        const hashArray = Array.from(new Uint8Array(hashBuffer));\n        return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n      } catch (e) {\n        return 'Unsupported';\n      }\n    }\n\n    \/\/ Complete Native JavaScript MD5 Implementation (RFC 1321)\n    function calculateMD5(buffer) {\n      const bytes = new Uint8Array(buffer);\n      let l = bytes.length;\n      let N = (((l + 8) >> 6) + 1) << 6;\n      let M = new Uint8Array(N);\n      M.set(bytes);\n      M[l] = 0x80;\n      \n      let view = new DataView(M.buffer);\n      view.setUint32(N - 8, l * 8, true);\n\n      let h0 = 0x67452301;\n      let h1 = 0xefcdab89;\n      let h2 = 0x98badcfe;\n      let h3 = 0x10325476;\n\n      let F = (x, y, z) => (x & y) | (~x & z);\n      let G = (x, y, z) => (x & z) | (y & ~z);\n      let H = (x, y, z) => x ^ y ^ z;\n      let I = (x, y, z) => y ^ (x | ~y);\n\n      let rotl = (x, n) => (x << n) | (x >>> (32 - n));\n\n      let s = [\n        7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,\n        5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,\n        4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,\n        6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21\n      ];\n\n      let K = [\n        0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,\n        0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,\n        0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,\n        0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,\n        0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,\n        0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,\n        0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,\n        0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391\n      ];\n\n      for (let i = 0; i < M.length; i += 64) {\n        let chunk = new Uint32Array(16);\n        for (let j = 0; j < 16; j++) {\n          chunk[j] = view.getUint32(i + (j * 4), true);\n        }\n\n        let A = h0, B = h1, C = h2, D = h3;\n\n        for (let j = 0; j < 64; j++) {\n          let div16 = Math.floor(j \/ 16);\n          let f, g;\n          if (div16 === 0) { f = F(B, C, D); g = j; }\n          else if (div16 === 1) { f = G(B, C, D); g = (5 * j + 1) % 16; }\n          else if (div16 === 2) { f = H(B, C, D); g = (3 * j + 5) % 16; }\n          else { f = I(B, C, D); g = (7 * j) % 16; }\n\n          let temp = D;\n          D = C;\n          C = B;\n          B = B + rotl((A + f + K[j] + chunk[g]), s[j]);\n          A = temp;\n        }\n\n        h0 = (h0 + A) | 0;\n        h1 = (h1 + B) | 0;\n        h2 = (h2 + C) | 0;\n        h3 = (h3 + D) | 0;\n      }\n\n      let hex = [h0, h1, h2, h3].map(val => {\n        let b = new ArrayBuffer(4);\n        new DataView(b).setInt32(0, val, true);\n        return Array.from(new Uint8Array(b)).map(x => x.toString(16).padStart(2, '0')).join('');\n      });\n\n      return hex.join('');\n    }\n\n    async function processHash() {\n      const text = inputText.value;\n      if (!text) {\n        resetOutputs();\n        return;\n      }\n\n      const encoder = new TextEncoder();\n      const data = encoder.encode(text);\n\n      outMd5.textContent = calculateMD5(data.buffer);\n      outSha1.textContent = await cryptoHash('SHA-1', data);\n      outSha256.textContent = await cryptoHash('SHA-256', data);\n      outSha512.textContent = await cryptoHash('SHA-512', data);\n    }\n\n    function resetOutputs() {\n      outMd5.textContent = '---';\n      outSha1.textContent = '---';\n      outSha256.textContent = '---';\n      outSha512.textContent = '---';\n      compareResult.classList.add('hidden');\n    }\n\n    generateBtn.addEventListener('click', processHash);\n\n    clearBtn.addEventListener('click', function () {\n      inputText.value = '';\n      fileInput.value = '';\n      compareInput.value = '';\n      resetOutputs();\n    });\n\n    wrapper.querySelectorAll('.copy-btn').forEach(btn => {\n      btn.addEventListener('click', function () {\n        const targetId = this.getAttribute('data-target');\n        const targetElem = wrapper.querySelector('#' + targetId);\n        if (targetElem && targetElem.textContent !== '---') {\n          navigator.clipboard.writeText(targetElem.textContent);\n          const origText = this.textContent;\n          this.textContent = 'Copied!';\n          setTimeout(() => (this.textContent = origText), 1500);\n        }\n      });\n    });\n\n    dropZone.addEventListener('click', () => fileInput.click());\n\n    ['dragenter', 'dragover'].forEach(eventName => {\n      dropZone.addEventListener(eventName, e => {\n        e.preventDefault();\n        dropZone.style.borderColor = 'var(--ht-accent)';\n      });\n    });\n\n    ['dragleave', 'drop'].forEach(eventName => {\n      dropZone.addEventListener(eventName, e => {\n        e.preventDefault();\n        dropZone.style.borderColor = 'var(--ht-border)';\n      });\n    });\n\n    dropZone.addEventListener('drop', e => {\n      const files = e.dataTransfer.files;\n      if (files.length) handleFile(files[0]);\n    });\n\n    fileInput.addEventListener('change', e => {\n      if (e.target.files.length) handleFile(e.target.files[0]);\n    });\n\n    function handleFile(file) {\n      const reader = new FileReader();\n      outMd5.textContent = 'Processing...';\n      outSha1.textContent = 'Processing...';\n      outSha256.textContent = 'Processing...';\n      outSha512.textContent = 'Processing...';\n\n      reader.onload = async function (e) {\n        const buffer = e.target.result;\n        inputText.value = `[File: ${file.name} - ${file.size} bytes]`;\n\n        outMd5.textContent = calculateMD5(buffer);\n        outSha1.textContent = await cryptoHash('SHA-1', buffer);\n        outSha256.textContent = await cryptoHash('SHA-256', buffer);\n        outSha512.textContent = await cryptoHash('SHA-512', buffer);\n      };\n      reader.readAsArrayBuffer(file);\n    }\n\n    compareBtn.addEventListener('click', function () {\n      const targetHash = compareInput.value.trim().toLowerCase();\n      if (!targetHash) return;\n\n      const currentHashes = [\n        outMd5.textContent,\n        outSha1.textContent,\n        outSha256.textContent,\n        outSha512.textContent\n      ].map(h => h.toLowerCase());\n\n      compareResult.classList.remove('hidden', 'hash-alert-success', 'hash-alert-danger');\n\n      if (currentHashes.includes(targetHash)) {\n        compareResult.classList.add('hash-alert-success');\n        compareResult.textContent = '\u2713 Match Found! The hash matches one of the outputs.';\n      } else {\n        compareResult.classList.add('hash-alert-danger');\n        compareResult.textContent = '\u2717 No Match. The hash does not match any output.';\n      }\n    });\n\n    downloadBtn.addEventListener('click', function () {\n      const content = `MD5: ${outMd5.textContent}\\nSHA-1: ${outSha1.textContent}\\nSHA-256: ${outSha256.textContent}\\nSHA-512: ${outSha512.textContent}`;\n      const blob = new Blob([content], { type: 'text\/plain' });\n      const url = URL.createObjectURL(blob);\n      const a = document.createElement('a');\n      a.href = url;\n      a.download = 'hashes.txt';\n      a.click();\n      URL.revokeObjectURL(url);\n    });\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Hash Generator &amp; Verifier \ud83c\udf19 Dark Mode Enter Text \/ Data: \ud83d\udcc1 Drag &amp; Drop a file here, or click to select Generate Hashes Clear All Generated Hashes Algorithm Hash Output Actions MD5 &#8212; Copy SHA-1 &#8212; Copy SHA-256 &#8212; Copy SHA-512 &#8212; Copy Download Hashes (.txt) Verify \/ Compare Hash Expected Hash: Compare<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-557","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/comments?post=557"}],"version-history":[{"count":4,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/557\/revisions"}],"predecessor-version":[{"id":759,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/557\/revisions\/759"}],"wp:attachment":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/media?parent=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}