彙編 使用者登入以及簡單資料加密

2021-07-24 17:00:34 字數 3197 閱讀 6086

masm6.15

;功能

;1.獲取字串長度

;2.簡單的解密

.486

;macro類似於c++中的內聯函式

crlf macro ;回車換行

mov ah,0eh ;功能號0e:顯示乙個字元

mov al,0dh ;al為待顯示的ascii碼

int 10h

mov al,0ah

int 10h

endm

outx macro x ;列印一串字元x為引數

mov ah,09h

mov dx,offset x

int 21h

endm

data segment use16

user db '11111111$'

passwd db '777777$' ;對稱加密後儲存資料

inuser db 10 dup(?)

inpasswd db 10 dup(?)

out1 db 'enter the username and the password:','$'

out2 db 'username:','$'

out3 db 'password:','$'

out4 db '*','$'

out5 db 'error!','$'

out6 db 'welcome','$'

uselend db ?

passwdlen db ?

tempwd db 10 dup(?) ;解密後的資料

data ends

;此處輸入資料段**

code segment use16

assume cs:code,ds:data,es:data

start:mov ax,data

mov ds,ax

mov es,ax

;獲取資料段中使用者名稱和密碼的位數

call getulen

call getplen

outx out1

crlf

outx out2

mov bx,offset inuser

mov cx,20 ;使用者名稱最大20個位元組

last1: mov ah,01h ;等待從鍵盤輸入乙個字元,同時顯示在顯示器螢幕

int 21h

mov byte ptr [bx],al

cmp al,0dh

jz jump1

inc bx

loop last1

jump1: crlf

outx out3

mov bx,offset inpasswd

mov cx,20

last2: mov ah,07h ;輸入字元但不顯示在螢幕上

int 21h

mov byte ptr [bx],al

cmp al,0dh

jz jump2

inc bx

outx out4

loop last2

jump2: crlf

cmp1: mov si,offset inuser

mov di,offset user

;從記憶體讀取使用者名稱長度

lea bx,uselend

mov cx,[bx]

and cx,00ffh

cldrepe cmpsb ;串比較,直到zf=0或cx=0

jz cmp2

outx out5

jmp exit

cmp2:

;對密碼區進行解密

call discry

mov si,offset inpasswd

mov di,offset tempwd

;從記憶體讀取密碼名長度

lea bx,uselend

mov cx,[bx]

shr cx,8

cldrepe cmpsb ;串比較,直到zf=0或cx=0

jz success

outx out5

jmp exit

success:outx out6

exit: mov ah,4ch

int 21h

;解密discry proc

;從記憶體讀取密碼名長度

lea bx,uselend

mov cx,[bx]

shr cx,8

;把passwd裡面的東西拷貝進tempwd

lea si,passwd

lea di,tempwd

disgo:

movsb

loop disgo

;從記憶體讀取密碼名長度

lea bx,uselend

mov cx,[bx]

shr cx,8

lea bx,tempwd

disc: sub [bx],cx

inc bx

loop disc

discry endp

;獲取使用者名稱字串長度

getulen proc

mov ax,0h

mov bl,24h

mov di,offset user

ul: cmp byte ptr[di],bl

jz goout1

inc di

inc ax

jmp ul

goout1:

lea bx,uselend

mov byte ptr [bx],al

mov ax,0h

mov bx,0h

mov di,0h

retgetulen endp

;獲取密碼符串長度

getplen proc

mov ax,0h

mov bl,24h

mov di,offset passwd

pl: cmp byte ptr[di],bl

jz goout2

inc di

inc ax

jmp pl

goout2:

lea bx,passwdlen

mov byte ptr [bx],al

mov ax,0h

mov bx,0h

mov di,0h

retgetplen endp

code ends

end start

簡單資料儲存以及抗鋸齒

題目是說的簡單資料儲存,也就是說少量的簡單的資料儲存,大量複雜的資料應該使用sqlite。cocos2d x提供了相應的方法儲存簡單資料 cpp view plain copy ccuserdefault shareduserdefault setstringforkey name zhycheng...

簡單資料儲存以及抗鋸齒

出處 題目是說的簡單資料儲存,也就是說少量的簡單的資料儲存,大量複雜的資料應該使用sqlite。cocos2d x提供了相應的方法儲存簡單資料 cpp view plain copy ccuserdefault shareduserdefault setstringforkey name zhych...

簡單模擬使用者密碼登入場景

問題描述 在日常生活中我們通常在各種情況下需要輸入密碼來獲取所需要的資訊,使用者登入有三次輸入機會,若三次輸入均錯誤則系統自動退出。請用c語言簡單模擬一下使用者密碼登入場景 問題分析 輸入密碼為字串,我們先定義乙個字串裡面儲存使用者初始密碼,再定義乙個陣列為使用者輸入的密碼,對初始密碼和輸入密碼用s...