Ele funciona da seguinte maneira: Pega a mensagem, reverte, e nela adiciona alguns caracteres. Para faze-lo, eu basicamente usei as seguintes classes: String, StringBuilder (para adicionar ou remover caractere) e StringBuffer (para reverter a mensagem).
public interface Chave {
public String criptografia(String x);
public String descriptografar(String i);
}
public class Encriptar implements Chave {
@Override
public String criptografia(String x){
StringBuffer sb = new StringBuffer(x); /*cria uma StringBuffer que
recebe a String que é passada como argumento no método.
*/
String a = sb.reverse().toString(); /*Cria uma string que armazena
a string buffer revertida*/
StringBuilder sc = new StringBuilder(a);/*cria uma stringbuilder que
armazena a String revertida*/
String p = sc.insert(1, "GñopDS1G 978F 7CS7F-{54").toString();/*
Adiciona os seguintes caracteres entre o primeiro e segundo caractere
(no caso, a partir da posição 1, indo até a posição 24)*/
p = sc.insert(0, "D(GS G9õmoga16*.98F {´´´798!?").toString();/*adiciona
os seguintes caracteres antes da palavra (a partir da posição 0, indo
até a posição 29)*/
p = sc.insert(p.length() - 1, "´´sg dg5d4àóîís g2dg9s7").toString();/*
adiciona os seguintes caracteres entre o penúltimo e último*/
p = sc.insert(p.length(), "kl sco pesaox").toString();/*adiciona os
seguintes caracteres depois do último*/
return p.toUpperCase(); //retorna a mensagem criptografada maiúscula
}//fim do método criptografia
@Override
public String descriptografar(String i) {
StringBuilder sl = new StringBuilder(i);/*Cria uma StringBuilder que
recebe a mensagem criptografada*/
sl.delete(0, 29);/*elimina os caracteres da posição 0 à 29, onde foi
adicionado caractere*/
sl.delete(1, 24);/*elimina os caracteres da posição 1 à 24, onde foi
adicionado caractere*/
sl.delete(sl.length() - 13, sl.length());/*elimina os caracteres apartir
da posição, onde foi adicionado caractere*/
sl.delete(sl.length() - 25, sl.length() - 1);/*elimina os caracteres
localizados antes do último caractere até o caractere localizado na
posição da subtração entre o tamanho do caractere subtraido à 25,
onde foi adicionado caractere*/
StringBuffer sf = new StringBuffer(sl.toString());/*Cria uma
StringBuffer, que armazena a StringBuilder com a mensagem que foi
passada para String*/
String x = sf.reverse().toString();/*cria uma String que armazena a
StringBuffer revertida, na qual foi passada para String*/
return x;//retorna a mensagem descriptografada
}//fim do método descriptografar
}//fim da classe Encriptar
public class Principal {
public static void main(String[] args) {
Encriptar e = new Encriptar();
String mensagem = "Hadrya";
System.out.println("Mensagem pura: "+mensagem);
System.out.println("Mensagem criptada:\n"+e.criptografia(mensagem));
String mensagemDescriptografada = e.criptografia(mensagem);
System.out.println("Mensagem descriptografada: "
+e.descriptografar(mensagemDescriptografada));
}
}
Saída:
Mensagem pura: Hadrya
Mensagem criptada:
D(GS G9ÕMOGA16*.98F {´´´798!?AGÑOPDS1G 978F 7CS7F-{54YRDA´´SG DG5D4ÀÓÎÍS G2DG9S7HKL SCO PESAOX
Mensagem descriptografada: HADRYA