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
相关产品推荐
相关产品推荐

