⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiami.asm

📁 简单加密算法,用于传输数据的加密
💻 ASM
字号:
include C:\001.mac
   .model small
   .386
   .stack 200
   .data
secret  db 'bdycsu'
codes db  6 dup(?)
 tp label byte
  mtl   db   50
  tl      db  ?
  tf      db  50 dup(?)
  array   db   50 dup(?)
  array1   db   50 dup(?)
  crlf         db   13,10,'$'
    mess  db  'input  the  text        :   ','$'
    mess1  db 'the  first  time        :   ','$'
    mess2  db 'the  second time        :   ','$'
     mess3  db 'decryot or not(y/n)     :   ','$'
    mess4  db 'input the   code        :   ','$'
    mess5  db 'jie       mi            :   ','$'
    mess6  db 'error!! input again     :   ','$'
    
    .code
;*******************************************************
main  proc far
       initz
       call rt
       cmp tl,0
       jz a0
       call encrypt
       prompt crlf
       prompt mess3
       mov ah,01
       int 21h
       cmp al,'y'
       jz yes
       cmp al,'n'
       jz a0
        finish
 

yes:   prompt crlf
       prompt mess4
       call check
              prompt crlf
       prompt mess5
       call decrypt 
      
a0:   finish
main endp
;**************************************************************
rt  proc near
     prompt mess
       mov  ah,0ah            
       lea  dx,tp
       int  21h
     prompt crlf
        mov bl, tl
        mov  cx,50
        sub  cx,bx
     blank1:
        mov tf[bx],20h   
        inc  bx
        loop  blank1
        ret
rt endp
;*******************************************
encrypt proc near
prompt mess1
      mov bx,0
st0: 
      xor dh,dh
      xor ah,ah
      mov al,tf[bx]
      add al,14
      mov ch,9
      div ch
      mov array[bx],al
      mov al,ah
      and ax,00ffh
      mov ch,5
      div ch
      mov array1[bx],al
      mov tf[bx],ah
      mov dl,ah  
      mov ah,02
      add dx,23h
   
      int 21h
      inc bl
      cmp bl,tl
      jge  go_on
      jmp st0
go_on:   prompt crlf
         prompt mess2
     
          mov si,0
          mov cl,tl
a20:      mov al,tf[si]
          mov dl,al
          xor dh,dh
          mov ah,02
          add dx,3fh
          add dx,si
          mov tf[si],dl
          int 21h
          inc si
  
          cmp si,bx
          jge exit
          jmp a20
exit:          
        ret
   

encrypt endp
;**************************************************************
decrypt proc near
     mov di,bx
     xor bx,bx
  
     mov cl,5
     mov ch,9
     mov si,0
b2:  mov al,tf[si]
     xor ah,ah
     sub ax,si   ;// 对应第二次加密
     sub ax,3fh  
     push ax
     mov al,array1[si] ;/ 对应第二次加密
     mul cl            ; mod 5解密
     pop bx            ; 
     add ax,bx         ;
     push ax           ;
     mov al,array[si]  ;
     mul ch            ;mod 9解密
     pop bx            ;
     add ax,bx         ;
     sub ax,14         ;减去随机加数//
     mov dx,ax
     mov ah,02
     int 21h
     inc si
     cmp si,di
     jge exit1
     jmp b2
exit1:ret
decrypt endp
;******************************************************
check proc near
  push ax
  push bx
  push cx
  push dx
stt:    mov cx,6
        mov si,0
check0: 
        mov  ah,01            
        int  21h
        mov codes[si],al
        inc si
        loop check0
        mov si,0ffffh
check1:  inc si
         mov al,codes[si]
         cmp al,secret[si]
         jz exit2
         prompt crlf
         prompt mess6
         jmp stt
        
exit2:   cmp si,6
         jg exit3
        
exit3:   pop dx
         pop cx
         pop bx
         pop ax  
         ret
check endp
end   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -