📄 base64.asm
字号:
;***********************************************
;程序名称:演示Base64编码/解码原理
;作者:罗聪
;日期:2002-9-14
;出处:http://laoluoc.yeah.net(老罗的缤纷天地)
;注意事项:如欲转载,请保持本程序的完整,并注明:
;转载自“老罗的缤纷天地”(http://laoluoc.yeah.net)
;***********************************************
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include Base64Dll.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib Base64Dll.lib
WndProc proto :DWORD, :DWORD, :DWORD, :DWORD
.const
IDC_BUTTON_ENCODE equ 3000
IDC_BUTTON_DECODE equ 3001
IDC_EDIT_INPUT equ 3002
MAXSIZE equ 260
.data
szDlgName db "lc_dialog", 0
szCaption db "BASE64 demo by LC", 0
szBuffer db 255 dup(0)
szText db 340 dup(0)
szMsg db 450 dup(0)
szTemplate_Encode db "字符串 ""%s"" 的Base64编码是:", 13, 10, 13, 10, "%s", 0
szTemplate_Decode db "编码 ""%s"" 经过Base64还原后的字符串是:", 13, 10, 13, 10, "%s", 0
.code
main:
invoke GetModuleHandle, NULL
invoke DialogBoxParam, eax, offset szDlgName, 0, WndProc, 0
invoke ExitProcess, eax
WndProc proc uses edi hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
LOCAL hEdit: HWND
.if uMsg == WM_CLOSE
invoke EndDialog, hWnd, 0
.elseif uMsg == WM_COMMAND
mov eax, wParam
mov edx, eax
shr edx, 16
movzx eax, ax
.if edx == BN_CLICKED
.if eax == IDCANCEL
invoke EndDialog, hWnd, NULL
.elseif eax == IDC_BUTTON_ENCODE || eax == IDOK
;取得用户输入的字符串:
invoke GetDlgItemText, hWnd, IDC_EDIT_INPUT, addr szBuffer, 255
;进行 ASCII->Base64 转换:
invoke Base64Encode, addr szBuffer, addr szText
;格式化输出:
invoke wsprintf, addr szMsg, addr szTemplate_Encode, addr szBuffer, addr szText
;显示结果:
invoke MessageBox, hWnd, addr szMsg, addr szCaption, MB_OK
.elseif eax == IDC_BUTTON_DECODE
;取得用户输入的字符串:
invoke GetDlgItemText, hWnd, IDC_EDIT_INPUT, addr szBuffer, 255
;进行 Base64->ASCII 转换:
invoke Base64Decode, addr szBuffer, addr szText
;格式化输出:
invoke wsprintf, addr szMsg, addr szTemplate_Decode, addr szBuffer, addr szText
;显示结果:
invoke MessageBox, hWnd, addr szMsg, addr szCaption, MB_OK
.endif
;全选edit里面的内容:
invoke GetDlgItem, hWnd, IDC_EDIT_INPUT
invoke SendMessage, eax, EM_SETSEL, 0, -1
.endif
.else
mov eax, FALSE
ret
.endif
mov eax, TRUE
ret
WndProc endp
end main
;******************** over ********************
;by LC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -