1.data段
cpp
data db "hello,sam"
key db "key"
dataLen dword ?
endata byte 10 dup(0)
dedata byte 10 dup(0)
2.Encryption(加密)
cpp
Encryption proc
push ebp
mov ebp,esp
;加密数据长度,循环次数
mov ecx,sizeof data
;寄存器不够用
sub esp,4
mov dword ptr [ebp-4],sizeof key
mov dataLen,0
la:
mov eax,dataLen
mov ebx,dword ptr [ebp-4]
cdq
idiv ebx
mov bl,byte ptr key[edx]
mov edx,dataLen
mov al,byte ptr data[edx]
not al
xor al,bl
mov byte ptr endata[edx],al
inc dataLen
loop la
mov esp,ebp
pop ebp
ret
Encryption endp
3.Decryption (解密)
cpp
Decryption proc
push ebp
mov ebp,esp
mov ecx,dataLen
mov dataLen,0
sub esp,4
mov dword ptr [ebp-4],sizeof key
la:
mov eax,dataLen
mov ebx,dword ptr [ebp-4]
cdq
idiv ebx
mov bl,byte ptr key[edx]
mov edx,dataLen
mov al,byte ptr endata[edx]
xor al,bl
not al
mov byte ptr dedata[edx],al
inc dataLen
loop la
mov esp,ebp
pop ebp
ret
Decryption endp