SHA-256 (Secure Hash Algorithm 2, output 256 bits) é função hash criptográfica padronizada em NIST FIPS 180-4. Princípio: transforma qualquer entrada (texto, binário, arquivo) em uma string de 64 caracteres hexadecimais (256 bits = 32 bytes).
Propriedades fundamentais:
- Determinístico — mesma entrada = mesmo hash sempre
- Avalanche — alterar 1 bit da entrada muda completamente o hash de saída
- Irreversível — não há algoritmo prático para recuperar entrada a partir do hash
- Resistente a colisão — virtualmente impossível encontrar duas entradas com mesmo hash
- Rápido — ~100MB/s em hardware comum
Exemplo:
Entrada: "Manipulação de minoxidil 5%"
SHA-256: 7a8f9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a
Entrada: "Manipulação de minoxidil 5%" (idêntica)
SHA-256: 7a8f9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a
Entrada: "Manipulação de minoxidil 5%." (1 ponto adicional)
SHA-256: 3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d
Aplicações em farmácia magistral:
- Hash-chain de pesagem — cada gramatura registrada com SHA-256
- Verificação de integridade de COA — hash do PDF do certificado de análise armazenado garante que arquivo não foi alterado
- Audit log — hash de cada evento + hash do anterior = corrente verificável
- Identificação de lote — hash composto de (IFA + lote + data + RT) gera ID único do lote produzido
- Validação de receita digital — hash dos dados da prescrição assinado pelo prescritor
Comparado com:
- MD5: deprecated (colisões conhecidas) — não usar em segurança
- SHA-1: deprecated (colisões teóricas + práticas) — não usar
- SHA-256: padrão atual recomendado
- SHA-512: mais lento, mesmo nível de segurança para uso comum
- SHA-3 (Keccak): alternativa moderna, mas SHA-256 ainda é dominante
Implementação:
JavaScript / Node.js:
import { createHash } from 'node:crypto';
const hash = createHash('sha256').update('input').digest('hex');
Python:
import hashlib
hashlib.sha256(b'input').hexdigest()
PostgreSQL:
SELECT encode(digest('input', 'sha256'), 'hex');
Importante para auditoria pública:
O paciente não precisa "confiar" na Farmanipulação para validar o lote — basta:
- Baixar audit log JSON do lote (
/api/transparencia/lote/<id>/audit-log.json) - Recomputar SHA-256 de cada evento
- Comparar com hash gravado
- Validar chain (cada
previous_hashbate com hash do evento anterior)
Validação leva segundos com qualquer ferramenta padrão. Não há "pular" essa verificação — ou os hashes batem (lote íntegro) ou não batem (lote alterado).
A Farmanipulação prevê SHA-256 como única função hash em todo o pipeline de auditoria — consistência simplifica documentação e treinamento. NIST aprovado, padrão da indústria, sem patente, suportado em todas as plataformas.