You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

8086 TASM环境下TEA算法实现的三类技术问题求助

8086 TASM汇编实现TEA算法的三个待解决问题

我已在8086 TASM汇编中完成TEA算法的encrypt和decrypt函数开发,加解密逻辑运行正常,但目前卡在以下三个问题上:

  • 字符串输入:需要实现汇编程序接收用户字符串输入的机制
  • 十六进制转换:将用户输入的字符串每个字符高效转换为十六进制形式,以适配TEA加密的输入要求
  • 加密消息还原:TEA加密结果包含不可读的未知符号,需解密后转换回可读的原始字符串

加解密函数代码

proc encrypt
    pusha

    mov cx, 32
    encryptLoop:
        ; sum += delta
        mov ax, [delta]
        add [sum], ax

        xor eax,eax
        ; ((p2 << 4) + k0)
        mov dx, [p2]
        shl dx, 4
        add dx, [k0]

        ; (p2 + sum)
        mov bx, [p2]
        add bx, [sum]

        ; ((p2 << 4) + k0) ^ (p2 + sum)
        xor dx, bx

        xor bx, bx

        ; ((p2 >> 5) + k1)
        mov bx, [p2]
        shr bx, 5
        add bx, [k1]
        ; ((p2 << 4) + k0) ^ (p2 + sum) ^ ((p2 >> 5) + k1)
        xor dx, bx
        add [pe1], dx

        ; ((p1 << 4) + k2)
        mov dx, [p1]
        shl dx, 4
        add dx, [k2]

        ; (p1 + sum)
        mov bx, [p1]
        add bx, [sum]

        ; ((p0 << 4) + k2) ^ (p0 + sum)
        xor dx, bx

        xor bx, bx

        ; ((p1 >> 5 ) + k3)
        mov bx,[p1]
        shr bx, 5
        add bx, [k3] 
        ; ((p0 << 4) + k2) ^ (p0 + sum) ^ ((p1 >> 5 ) + k3)
        xor dx, bx

        add [pe2], dx
    loop encryptLoop

    popa
    ret
endp encrypt

proc decrypt
   pusha

    mov cx, 32
    decryptLoop:
        ; ((p1 << 4) + k2)
        mov dx, [p1]
        shl dx, 4
        add dx, [k2]

        ; (p1 + sum)
        mov bx, [p1]
        add bx, [sum]

        ; ((p0 << 4) + k2) ^ (p0 + sum)
        xor dx, bx

        xor bx, bx

        ; ((p1 >> 5 ) + k3)
        mov bx,[p1]
        shr bx, 5
        add bx, [k3] 
        ; ((p0 << 4) + k2) ^ (p0 + sum) ^ ((p1 >> 5 ) + k3)
        xor dx, bx

        sub [pe2], dx

        xor ax,ax
        ; ((p2 << 4) + k0)
        mov dx, [p2]
        shl dx, 4
        add dx, [k0]

        ; (p2 + sum)
        mov bx, [p2]
        add bx, [sum]
        
        ; ((p1 << 4) + k0) ^ (p1 + sum)
        xor dx, bx

        xor bx, bx

        ; ((p2 >> 5) + k1)
        mov bx, [p2]
        shr bx, 5
        add bx, [k1]
        ; ((p2 << 4) + k0) ^ (p2 + sum) ^ ((p2 >> 5) + k1)
        xor dx, bx
        sub [pe1], dx

        ; sum -= delta
        mov ax, [delta]
        sub [sum], ax
    loop decryptLoop

    popa

    ret
endp decrypt

DS段代码

delta dw 79b9h ; 79b9h for 16 bits, 9e3779b9h for 32 bits

sum dw 0
p1 dw 0
p2 dw 0

k0  dw 0                  
k1  dw 0                   
k2  dw 0                   
k3  dw 0         

; Two part of the plaintext after encryption
pe1 dw 0
pe2 dw 0        

内容的提问来源于stack exchange,提问作者ChickenRei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:40:13