Ensamblador - encriptacion

 
Vista:

encriptacion

Publicado por roberto hernandez (1 intervención) el 13/12/2006 19:04:37
HOLA:

tengo un programa de encriptacion, pero lo que pasa es que pido la cadena, la volteo, pero lo que quiero es tomar la cadena volteada y sumar la posicion de la letra (a cada letra ) y asi hacer la encriptacion


.MODEL SMALL
.STACK
.DATA
CADENA DB 15,0,15 DUP ('$') ; Bufer que almacena la cadena original.
MENSAJE DB 13,10,'Este programa encripta una cadena de caracteres'
DB 13,10,'$'
Error DB 13,10,'Error 1: La Cadena no pude ser NULA'
DB 13,10,'$'
Salir DB 'EXIT'
CADENADOS DB 13,10,'Cadena a encriptar. M ximo 20 Bytes : ','$'
MenCryp DB 13,10,'Cadena encriptada: ','$'
MenDCr DB 13,10,'Cadena desencriptada: ','$'
MenPr DB 13,10,'Presione cualquier tecla para continuar',0DH,0AH,'$'
;------------------------------------------------------------------------------------------------------------------------------
.CODE
EMPIEZA:

MOV AX,@DATA ;ESTO NOS SIRVE PARA EMPEZAR EL PROGRAMA Y NOS MANDA UN MESAJE DE LA FUNCION DE "MENSAJE"
MOV DS,AX
MOV DX, OFFSET MENSAJE
MOV AH,9H
INT 21H
PUSH DS
POP ES
;---------------------------------------------------------------------------------------------------------------------------------

Captura:
LEA DX,CADENADOS ;ESTA FUNCION NOS SIRVE PARA MANDAR A LLMAR LE MENSAJE PARA CAPTURAR LA CADENA
MOV AH,9H
INT 21H

MOV AH,0AH ;ESTA FUNCION NOS SIRVE PARA CAPTURAR LA CADENA
MOV DX, OFFSET CADENA
PUSH DX
INT 21H
POP DX
INC DX

mov cx,50
mov bx,offset CADENA
ciclo:
mov al,cl
xlat
mov dl,al
mov ah,2
int 21h
loop ciclo


MOV SI,DX ;EN ESTA FUNCION NOS SI LA CADENA CONTIENE INFORMACION O SI ES NULA
CMP BYTE PTR [SI],0
JNZ Capt02

LEA DX, Error ;ESTA FUNCION NOS SIRVE PARA MARDAR A LLAMAR EL MENSAJE DE ERROR
MOV AH,9H
INT 21H

JMP EMPIEZA ;SALTA A LA FUNCION PARA VOLVER A EMPEZAR
;-------------------------------------------------------------------------------------------------------------------------------

Capt02:
INC DX ;Obtengo el primer byte para ver si no
;se digit¢ EXIT.
MOV CX,4 ;Voy a revisar 4 Bytes (EXIT).
MOV SI,DX ;Tengo la cadena
MOV DI, OFFSET Salir ;Voy a comparar.
REPE CMPSB ;Se digit¢ EXIT?.
JCXZ Fuera ;Si es cierto sale del programa.
MOV SI, OFFSET CADENA+1;Obtengo la cantidad de Bytes realmente le¡dos
LEA BX, CADENA+1 ;Cargo BX igual que con la anterior
;instrucci¢n.
MOV CL, BYTE PTR [SI] ;CX con la cantidad de caracteres
;---------------------------------------------------------------------------------------------------------------------------------
Crypt:


INC BX ;Primer caracter de la cadena
MOV AH,[BX] ;Lo llevo a AH para su encriptaci¢n
ADD AH,1D ;Lo encripto.
MOV [BX],AH ;Lo restauro en el bufer.
LOOP Crypt ;Itero hasta CX=0
LEA DX,MenCryp
MOV AH,9H
INT 21H
MOV DX, OFFSET CADENA+2;Me preparo para mostrar la cadena encriptada
;me posiciono en el primer caracter de la
;cadena
MOV AH,9H
INT 21H ;Muestro la cadena encriptada

MOV SI, OFFSET CADENA+1;Me preparo para desencriptarla
LEA BX, Cadena+1 ;Lo mismo anterior
MOV CL, BYTE PTR [SI] ;CX con el numero de caracteres
;-------------------------------------------------------------------------------------------------------------------------
DeCrypt:



INC BX ;Obtengo primer caracter
MOV AH,[BX]
SUB AH,1D ;Lo desencripto
MOV [BX],AH ;Se restaura el original en el bufer
LOOP DeCrypt ;Repito hasta que CX=0
MOV DX, OFFSET MenDCr
MOV AH,9H
INT 21H
MOV DX, OFFSET CADENA+2;Primer caracter de la cadena
;desencriptada.
MOV AH,9H
INT 21H ;Muestro la cadena desencriptada
MOV DX, OFFSET MenPr
MOV AH,9H
INT 21H
MOV AH,0H ;Espero que el usuario pulse
INT 16H ;cualquier tecla para continuar
JMP Captura ;Vuelve y juega.
Fuera:
MOV AX,4C00H ;Funci¢n para retornar al DOS
INT 21H ;Retorno!.
END EMPIEZA ;y se acab¢.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:encriptacion

Publicado por jose (1 intervención) el 21/04/2007 00:01:18
alguine me puede ayudar pra que funcione este programa

.MODEL SMALL
.STACK 100H
.DATA
MENSAJE DB 'AQUIESTOY$'
ENCLAVE DB 40 DUP (?)
.CODE
MOV AX, OFFSET MENSAJE
MOV DS, AX
;PRIMERA PARTE DEL ALGORITMO
LEA SI, MENSAJE
LEA DI, ENCLAVE
;SEGUNDA PARTE DEL ALGORITMO
CICLO:
MOV AL, [SI]
CMP AL, '$'
; JE FINCICLO
;ESTE CODIGO SE EJECUTA SI NO SE CUMPLE LA CONDICION
CMP AL, 'X'
; JAE OTROCODIGO
ADD AL, 3
MOV [DI], AL
INC SI
INC DI
; JMP CICLO
;OTRO CODIGO
SUB AL, 'X' - 'A'
INC SI
INC DI
JMP CICLO
MOV [DI], AL
MOV AH, 4CH
INT 21H
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar