s2Eva_IIT2012_T2 Cifrado César

Ejercicio: 2Eva_IIT2012_T2 Cifrado César

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

El ejercicio se desarrolla primero con el ejemplo del enunciado, con mensaje=’HOLA’ y llave=’3′.

Luego de resuelto el ejemplo se incorporan las situaciones de desplazamientos de posiciones en los extremos y la forma de función del algoritmo.

Ejemplo de ejecución

>>> cifradocesar('hola',3)
'KROD'
>>> cifradocesar('HoLa',3)
'KROD'
>>>

Instrucciones Python

# 2Eva_IIT2012_T2 Cifrado César
# propuesta: edelros@espol.edu.ec

### INGRESO
##mensaje = input('mensaje: ')
##llave   = int(input('llave: '))

# PROCEDIMIENTO
def cifradocesar(mensaje,llave):
    alfabeto = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    m = len(alfabeto)

    # mensaje en mayusculas
    mensaje = mensaje.upper()
    t = len(mensaje)

    # crear resultado desde primera letra
    resultado = ''
    i = 0
    while i<t:
        
        letra = mensaje[i]
        # buscar letra en alfabeto
        encontre = -1
        j = 0
        while j<m and encontre<0:
            if letra==alfabeto[j]:
                encontre = j
            j = j + 1
            
        # cifrado Cesar
        nueva = encontre + llave
        if nueva>m:
            nueva = nueva - m
        if nueva<0:
            nueva = nueva + m
        cifrado = alfabeto[nueva]
        resultado = resultado + cifrado
        i = i + 1
    return(resultado)

### SALIDA
##print('cifrado César: ',resultado)

Tarea: En el caso que el mensaje tiene un caracter espacio ' ' o ',' es decir un caracter que no está en el alfabeto, éste no se reemplaza. De no implementarse se muestra un error en la codificación, mostrado en rojo en el ejemplo.

>>> cifradocesar('hola,hola',3)
'KRODCKROD'
>>>