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¢.
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
0