Salve gente!!! mi servirebbe il vostro aiuto.Ho creato una piccola classe che inplementa l'algoritmo di criptografia di Vigenere.Ma ho dei problemi già nel metodo di criptografia e nello specifico nell'istruzione " res[x]=' '; " ho un ArrayIndexOfBoundsException: -52 . sareste così gentili da correggere eventuali errori. grazie per il vostro aiuto. p.s so che il codice è una ciofeca ma al momento punto alla sua funzionalità dopo ci sarà tempo per renderlo più "simpatico"
codice:
class Vigenere {
private String testo;
private String chiave;
char alfabeto[]= {'a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
Vigenere(String chi){
chiave=chi; }
public String Cripta(String str) {
testo=str.toLowerCase();
char[] res=testo.toCharArray();
chiave=chiave.toLowerCase();
String criptata="";
char[] testo1=testo.toCharArray();
char[] chiave1=chiave.toCharArray();
for(int x=0;x<testo.length();x++){
if(testo.charAt(x)==' '){
res[x]=' ';
}
if(testo.charAt(x)!=' '){
int i=0; int xx=((((int)testo1[x])-97)+((((int)chiave1[i])-97)%26));
i = (i + 1) % chiave.length();
if(xx>25){
xx=xx-25; }
res[x]=alfabeto[xx];
}
} for (int y = 0; y < testo.length(); y++){
criptata+=((Character)res[y]); } return criptata;
}
public String Decripta(String str){
String lung=str;
int i=0;
chiave=chiave.toLowerCase();
char[] chiave1=testo.toCharArray();
char[] dec=str.toCharArray();
String send="";
for(int h=0;h<lung.length();h++){
if(dec[h]==' '){
send+=" ";
}
int xx=((((int)dec[h])-97)-((((int)chiave1[h])-97)%26));
i = (i + 1) % chiave.length();
send+=((Character)alfabeto[xx]);
} return send;
}
}