{
  "id": 8984501,
  "title": "Using SHA256 to Build Trustworthy Data Portals in Brazil",
  "url": "https://urgent.news/2026/09/21/using-sha256-to-build-trustworthy-data-portals-in-brazil",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-21T19:01:16.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/vou_embarcar_602e285676c8/using-sha256-to-build-trustworthy-data-portals-in-brazil-3629"
  },
  "original_language": "en",
  "account": "In Brazil, data portals for lottery results and other public datasets often face accusations of tampering. To combat this credibility issue, I developed a solution called deunobicho.online that uses SHA256 content hashing with public evidence pages. This method ensures that every published resource has a canonical JSON representation and stores the SHA256 hash of the canonical JSON alongside the resource. A public evidence page is then generated, displaying the raw canonical JSON, the hash, timestamp, source, and a link to the original source. When a portal needs to correct a result, a new evidence page with a new hash is published, and both pages are linked via an audit log. This process allows users to verify the numbers they see on the portal against the hash on the evidence page. The implementation was done using Next.js 16 (App Router) with an API route that generates the evidence page and ensures the hash remains immutable.",
  "summary": "Data portals in emerging markets face a specific credibility problem: how do you prove that the data you display was not silently altered after publication? This matters more than it sounds. Editorial portals covering lottery results, election counts, or public dataset feeds in Brazil are frequently accused (rightly or not) of tampering. The typical defense — \"trust us, we did not change…",
  "key_points": [
    "Deunobicho.online uses SHA256 hashing to ensure data integrity",
    "Public evidence pages display raw JSON, hash, timestamp, source",
    "Audit log links corrected evidence pages to maintain transparency"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}