En criptografía, un cifrado César es una de las técnicas de cifrado más simples conocidas. En este método, cada letra de los datos que se van a cifrar se reemplaza por una letra con un número fijo de posiciones en el alfabeto.
En este ejemplo, cifremos un dato simplemente reemplazando cada alfabeto en él con un cambio de dos alfabetos, así a será sustituido por c, b con d y así.
Usamos LODS para cargar la cadena original 'contraseña' en la memoria.
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov ecx, len
mov esi, s1
mov edi, s2
loop_here:
lodsb
add al, 02
stosb
loop loop_here
cld
rep movsb
mov edx,20 ;message length
mov ecx,s2 ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
s1 db 'password', 0 ;source
len equ $-s1
section .bss
s2 resb 10 ;destination
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
rcuuyqtf