CIFRADO DE CESAR

Share:
En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de cifrado más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, la A sería sustituida por la D (situada 3 lugares a la derecha de la A ), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales.


El cifrado César muchas veces puede formar parte de sistemas más complejos de codificación, como el cifrado Vigenère, e incluso tiene aplicación en el sistema ROT13. Como todos los cifrados de sustitución alfabética simple, el cifrado César se descifra con facilidad y en la práctica no ofrece mucha seguridad en la comunicación.

EXPLICACIÓN DEL ALGORITMO:


El proceso  empieza  transformando las letras  del alfabeto en números, por ello considerando a P  como el equivalente numérico  de una  letra  en el texto plano,  y C como el equivalente  de la correspondiente letra  en el texto  cifrado, tenemos  la siguiente expresión denominada transformación del César:




IMPLEMENTACIÓN:
Nota el presente algoritmo recibe como parámetro el numero de desplazamientos a realizar, el algoritmo por defecto realiza 3.


public class Cesar{ 
 
    public String cifrado(String frase, int n){ 
 
        int i,j; 
 
        char fraseCifrada[] = new char[frase.length()]; 
 
        fraseCifrada = frase.toCharArray(); 
 
        for(i=0;i< frase.length();i++){ 
            for(j=0;j< n;j++){ 
                if((fraseCifrada[i] > =65 && fraseCifrada[i] < 90) || (fraseCifrada[i] > =97 && fraseCifrada[i] < 122)){ 
                    fraseCifrada[i]++;               
                } 
                else if(fraseCifrada[i]==90) 
                    fraseCifrada[i]='A'; 
                else if(fraseCifrada[i]==122) 
                    fraseCifrada[i]='a'; 
            } 
        } 
 
        frase = String.valueOf(fraseCifrada); 
 
        return frase; 
    } 
 
     
        public String descifrado(String frase, int n){ 
 
        int i,j; 
 
        char fraseDescifrada[] = new char[frase.length()]; 
 
        fraseDescifrada = frase.toCharArray(); 
 
        for(i=0;i< frase.length();i++){ 
            for(j=0;j< n;j++){ 
                if((fraseDescifrada[i] > 65 && fraseDescifrada[i] < = 90) || (fraseDescifrada[i] > 97 && fraseDescifrada[i] < =122)){ 
                    fraseDescifrada[i]--;               
                } 
                else if(fraseDescifrada[i]==65) 
                    fraseDescifrada[i]='Z'; 
                else if(fraseDescifrada[i]==97) 
                    fraseDescifrada[i]='z'; 
            } 
        } 
 
        frase = String.valueOf(fraseDescifrada); 
 
        return frase; 
    } 
} 

No hay comentarios