?? 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 + -