用汇编编写加解密函数

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
相关推荐
快去睡觉~1 小时前
力扣73:矩阵置零
算法·leetcode·矩阵
小欣加油1 小时前
leetcode 3 无重复字符的最长子串
c++·算法·leetcode
猿究院--王升4 小时前
jvm三色标记
java·jvm·算法
一车小面包4 小时前
逻辑回归 从0到1
算法·机器学习·逻辑回归
tt5555555555555 小时前
C/C++嵌入式笔试核心考点精解
c语言·开发语言·c++
科大饭桶6 小时前
C++入门自学Day14-- Stack和Queue的自实现(适配器)
c语言·开发语言·数据结构·c++·容器
tt5555555555556 小时前
字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
c++·算法·矩阵
元亓亓亓7 小时前
LeetCode热题100--101. 对称二叉树--简单
算法·leetcode·职场和发展
不会学习?7 小时前
算法03 归并分治
算法
NuyoahC8 小时前
笔试——Day43
c++·算法·笔试