83 lines
2.5 KiB
Java
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() {}
|
|
} |