⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base64.asm

📁 加密解密2配套光盘,内有加密解密第二版书内提及的软件.
💻 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 + -