Campanhas de arrecadaçãoParóquia Catedral de São José
Auditoria pública

Auditoria do sorteio

Campanha teste 01

  1. Sorteio trancado com assinatura digital
    02/11/2026, 21:57

    Ao abrir as vendas, o sistema gerou uma chave secreta e publicou apenas a sua “impressão digital” (SHA-256). Se a chave fosse trocada depois, a impressão digital não bateria mais.

    b9b029a3d3392f86c080cc3f9ee83dd2f9d05d4654f7a6e162f543c8e3c2ebb0
  2. 2
    Vendas encerradas e lista de cotas publicada

    Vendas abertas até 03/12/2026, 20:00. A lista será publicada no encerramento.

  3. 3
    Número sorteado ao vivo

    Será sorteado em público no dia da apuração (04/12/2026, 20:00).

  4. 4
    Sorteio apurado e chave revelada

    Previsto para 04/12/2026, 20:00.

Como o cálculo funciona (para quem quiser refazer em outra ferramenta)
1. Assinatura: SHA-256(chave) deve ser igual à assinatura publicada na abertura das vendas. 2. Lista: os números vendidos em ordem crescente, um por linha, separados por "\n" (sem linha final). hashLista = SHA-256(lista). 3. aoVivo = o número sorteado em público, exatamente como publicado (só algarismos, zeros à esquerda incluídos). 4. Para o prêmio k (1, 2, 3…), começando com t = 0: h = SHA-256(chave + ":" + hashLista + ":" + aoVivo + ":" + k + ":" + t) índice = h (lido como número hexadecimal) módulo a quantidade de cotas vendidas número sorteado = posição "índice" da lista (a primeira posição é 0). Se o número já ganhou um prêmio anterior, repete com t + 1. 5. Todos os textos são codificados em UTF-8 e os hashes escritos em hexadecimal minúsculo.
# Python 3 — salve a lista como vendas.txt
import hashlib
chave = "<chave revelada>"
ao_vivo = "<número sorteado ao vivo>"
lista = open("vendas.txt").read().strip()
nums = [int(x) for x in lista.split("\n")]
h_lista = hashlib.sha256("\n".join(map(str, sorted(nums))).encode()).hexdigest()
ganhou = []
for k in range(1, 1 + 1):
    t = 0
    while True:
        h = hashlib.sha256(f"{chave}:{h_lista}:{ao_vivo}:{k}:{t}".encode()).hexdigest()
        n = sorted(nums)[int(h, 16) % len(nums)]
        if n not in ganhou:
            ganhou.append(n); print(k, "º prêmio:", n); break
        t += 1