package com.crypto; import java.math.BigInteger; import io.javalin.Javalin; public class Seal { public static void main(String[] args) { // Avvio del server web Javalin app = Javalin.create(config -> { config.staticFiles.add("/get"); }).start(8080); System.out.println("Generazione chiavi RSA per il server web in corso..."); // Cifratura con Cifrario di Vigenere (TODO) app.post("/seal/vigenere/encrypt", ctx -> { } ); // Cifratura con Cifrario di Cesare app.post("/seal/caesar/encrypt", ctx -> { RichiestaCesare req = ctx.bodyAsClass(RichiestaCesare.class); String ciphertext = Caesar.encode(req.plaintext,req.key); ctx.result(ciphertext); } ); // Decifratura con Cifrario di Cesare (Attacco Bruteforce !!) app.post("/seal/caesar/decrypt", ctx -> { RichiestaCesare req = ctx.bodyAsClass(RichiestaCesare.class); String[] ciphertext = Caesar.decode(req.ciphertext); ctx.json(ciphertext); } ); // Cifratura con RSA app.post("/seal/rsa/encrypt", ctx -> { // Legge i dati nel body dalla richiesta RichiestaRSA req = ctx.bodyAsClass(RichiestaRSA.class); RSA.RSAkeys keys = RSA.defkeys(req.keysize / 2); String ciphertext = RSA.encrypt(req.text,keys.e(), keys.n()); ctx.result("{\"ciphertext\":\""+ciphertext+"\",\"keys\":{\"d\":\"" + keys.d().toString() + "\",\"n\":\"" + keys.n().toString() + "\"}}"); }); // Decifratura con RSA app.post("/seal/rsa/decrypt", ctx -> { // Legge i dati nel body dalla richiesta RichiestaRSA req = ctx.bodyAsClass(RichiestaRSA.class); BigInteger d = new BigInteger(req.d); BigInteger n = new BigInteger(req.n); // Usa il metodo RSA per cifrare String plaintext = RSA.decrypt(req.text, d, n); // Restituisce il risultato della cifratura ctx.result(plaintext.replace("\u0000", "").trim()); }); } } // Classi utilizzate per tradurre il JSON - Rappresenta l'oggetto richiesta class RichiestaCesare { public int key; public String plaintext; public String ciphertext; public RichiestaCesare() {} } class RichiestaRSA { public int keysize; public String text; public String d; public String n; // Costruttore della richiesta public RichiestaRSA() {} }