~/portfolio

~/portfolio $ cat ./projetos/rsa-visualizer.mdx

RSA Visualizer

RSA didático no browser: primos, φ(n), Euclides estendido, chaves e encriptação com animações.

rsacriptografiamatemática-discretamiller-rabinbigint

./ficha

subject
Matemática Discreta
semester
2023/1
date
2023-05-15
category
interactive
impact
medium

./links

Sobre o projeto

RSA é a base da criptografia assimétrica moderna. Entender como funciona — não só como chamar uma biblioteca — ajuda a arquitetar sistemas com mais confiança.

Esta demo implementa o núcleo no browser, com BigInt nativo (sem node:crypto no motor), e mostra passo a passo a derivação de chaves e um exemplo de encriptação/decriptação.

Demo

Abrir a demo interativa

A demo é servida no mesmo deploy do portfólio: apps/projects/rsa-visualizer é um package de componentes consumido pela rota /projetos/rsa-visualizer/demo em apps/web. Sem iframe, sem subdomínio, sem variável de URL externa.

Conceitos cobertos

  • Aritmética modular e exponenciação modular (modPow)
  • Algoritmo de Euclides estendido (inverso modular de e modulo φ(n))
  • Miller–Rabin para primalidade (incluindo números de Carmichael onde o teste de Fermat falha)
  • Geração de chaves e round-trip (m \to c \to m') com mensagem curta em UTF-8 (inteiro por bloco)

Destaques técnicos

  • Testes em Vitest sobre src/lib (modular, Euclides, primalidade, RSA, mensagem UTF-8)
  • UI com Framer Motion nos passos e typewriter nas linhas de cálculo
  • Atalhos de teclado na página da demo (ver ajuda no canto do subtítulo)

Limitações didáticas

Chaves com primos pequenos (32 bits no máximo didático): rápidas de animar, mas não representam parâmetros de produção (2048+ bits, OAEP, híbridos com AES, etc.).

Código

Código-fonte no monorepo, em apps/projects/rsa-visualizer (package de componentes @projects/rsa-visualizer).

~/portfolio/projetos $ cd ..

cd ..