Files
cryptoseals/backend/src/main/java/com/crypto/Seal.java
elisabetta 48f0c35039
All checks were successful
Deploy / trigger (push) Successful in 24s
hm
2026-04-20 22:22:49 +02:00

83 lines
2.5 KiB
Java

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() {}
}