Created
November 29, 2016 07:36
-
-
Save nihilismus/90a432dd758835f51b5c738730837e83 to your computer and use it in GitHub Desktop.
Main.asm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
title Main | |
include Irvine32.inc | |
;;;; Escriba las instrucciones necesarias en lenguaje ensamblador para el algoritmo | |
;;;; del Cifrado Atbash que opere sobre una palabra: | |
;;;; Este método consiste en sustituir la primera letra por la última del alfabeto | |
;;;; que se esté utilizando, la segunda por la penúltima, la tercera por la antepenúltima | |
;;;; y así sucesivamente con todo el alfabeto. A este método también suele llamársele | |
;;;; código espejo ya que el cifrado del criptograma es nuevamente el texto en claro. | |
;;;; Fuente: http://bit.ly/2gbni5U | |
;;;; | |
;;;; Alfabeto: ABCDEFGHIJKLMNOPQRSTUVWXYZ | |
;;;; | |
;;;; Observaciones: | |
;;;; | |
;;;; 1) El mensaje en claro más pequeño solo podrá ser de un carácter y solo contendrá | |
;;;; letras (en mayúsculas) que existan en el alfabeto. | |
;;;; 2) El mensaje cifrado estará en letras minúsculas. | |
.data | |
separador1 word 50 dup(16448) | |
;;;; Para solucion1() | |
alfabeto1 byte 65 dup(0), 'zyxwvutsrqponmlkjihgfedcba' | |
;;;; 'abcdefghijklmnopqrstuvwxyz' | |
;;;; Para solucion2() | |
alfabeto2 byte 'abcdefghijklmnopqrstuvwxyz' | |
separador2 word 50 dup(16448) | |
mensaje_claro byte 'ENSAMBLADOR' | |
separador3 word 50 dup(16448) | |
mensaje_cifrado byte sizeof mensaje_claro dup(0) | |
separador4 word 50 dup(16448) | |
.code | |
solucion1 proc ;;;; solucion1() | |
limpiar_registros: | |
mov eax, 0 | |
mov ebx, 0 | |
mov ecx, 0 | |
mov edx, 0 | |
mov esi, 0 | |
mov edi, 0 | |
obtener_acceso_a_los_mensajes: | |
mov esi, offset mensaje_claro | |
mov edi, offset mensaje_cifrado | |
establecer_contador_de_ciclo_para_recorrido_sobre_mensaje_claro: | |
mov ecx, sizeof mensaje_claro | |
sustituir_caracteres_del_mensaje_claro_en_mensaje_cifrado: | |
mov edx, offset alfabeto1 | |
mov eax, 0 | |
mov al, [esi] | |
add edx, eax | |
mov bl, [edx] | |
mov [edi], bl | |
inc esi | |
inc edi | |
loop sustituir_caracteres_del_mensaje_claro_en_mensaje_cifrado | |
exit | |
solucion1 endp ;;;; } | |
solucion2 proc ;;;; solucion2() | |
mov esi, offset mensaje_claro | |
mov eax, offset mensaje_cifrado | |
mov ecx, sizeof mensaje_claro | |
etq1: | |
;;;; Da por hecho que antes de separador2 se encuentra el alfabeto2 | |
mov edx, offset separador2 | |
mov bl, [esi] | |
movzx ebx, bl | |
sub ebx, 64 | |
sub edx, ebx | |
mov bl, [edx] | |
mov [eax], bl | |
inc esi | |
inc eax | |
loop etq1 | |
exit | |
solucion2 endp ;;;; } | |
;;;; end solucion1 | |
;;;; end solucion2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment