Este projeto é uma API REST desenvolvida em Spring Boot 4, integrando técnicas de criptografia (AES, SHA-256, Cifra de César) com um sistema de jogo Pedra–Papel–Tesoura.
O sistema possui:
- Registro e login com hash SHA-256
- Nome de exibição criptografado com Cifra de César
- Histórico de partidas armazenado com notas criptografadas em AES
- Sessão via JSESSIONID (cookies) — sem JWT
- Endpoints para jogar MD1, MD3 e MD5
- Histórico de partidas
- Testes unitários completos
- Java 21
- Spring Boot 4
- Spring Web
- Spring Security (Cookie-Based Session)
- Spring Data JPA
- PostgreSQL
- Liquibase
- Mockito + JUnit 5
- Swagger/OpenAPI (SpringDoc)
src/main/java/com/unifacisa/cripto/
│
├── config/ # SecurityConfig
├── controller/ # Controllers REST
├── cryptography/ # CaesarService / AesService
├── dto/ # DTOs
├── entity/ # User / Match entities
├── enums/ # Move / Result
├── repository/ # JPA Repositories
├── security/ # HashService + UserSessionService
└── service/ # AuthService / GameService
Usado para armazenar senha no banco.
Usado para criptografar o displayName do usuário.
Usado para criptografar notas internas das partidas (ex: “Round MD3”, “Partida MD1”).
O projeto NÃO usa JWT.
Ele usa cookies de sessão fornecidos pelo Spring Security:
Set-Cookie: JSESSIONID=xxxxxxx; Path=/; HttpOnly; SameSite=Lax
Após o login:
👉 O backend salva o usuário no UserSessionService (session scoped)
👉 Toda requisição posterior precisa mandar o cookie JSESSIONID
No Postman:
- Faça o login
- Vá em Cookies → Adicionar Cookie → JSESSIONID=id
- Faça as requisições
/game/**e/history/**
spring.datasource.url=jdbc:postgresql://localhost:5432/cripto
spring.datasource.username=postgres
spring.datasource.password=123
spring.jpa.hibernate.ddl-auto=none
spring.liquibase.enabled=true
mvn spring-boot:run
http://localhost:8080/swagger-ui/index.html
{
"username": "marcos",
"password": "123",
"displayName": "Marcos Castro"
}👉 Retorna cookie JSESSIONID.
{
"username": "marcos",
"password": "123"
}["pedra", "papel", "tesoura"]["pedra","pedra","papel","tesoura","papel"]Retorna histórico do usuário logado.
✔ Criptografia Caesar
✔ Criptografia AES
✔ Hash SHA-256
✔ AuthService
✔ GameService (MD1, MD3, MD5)
✔ AuthController
✔ GameController
✔ HistoryController
db/changelog/master.xml- Scripts para criação de tabelas
userematch