base64解码函数(win32汇编)
*/ --------------------------------------------------------------------------------------*/ 出自: 编程中国 https://www.bccn.net
*/ 作者: zklhp E-mail:zklhp@ QQ:493165744
*/ 时间: 2008-8-9 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
再发个偶写的base64算发的解码函数 请高手指点
程序代码:
.data base64table db 43 dup (255) db 62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255 db 255,255,0,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13 db 14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255 db 255,255,26,27,28,29,30,31,32,33,34,35,36,37,38 db 39,40,41,42,43,44,45,46,47,48,49,50,51 db 132 dup (255) .code ;************************************************************************************************** ;进行base64解码的函数 ;参数:_lpszSrc 指向输入缓冲区 _lpszDst 指向输出缓冲区 _dwSrcLen 想要加密的长度 ;返回值:成功返回0 失败返回 -1 ;作者:zklhp Email:zklhp@时间:2008.8.16 ;版权所有 转载请保持完整 ;************************************************************************************************** _Base64Decode proc uses ebx edi esi _lpszSrc:DWORD,_lpszDst:DWORD,_dwSrcLen:DWORD ;错误处理 .if (_lpszSrc==NULL)||(_lpszDst==NULL)||(_dwSrcLen==0) xor eax,eax dec eax ret .endif mov eax,_dwSrcLen and eax,11b .if eax != 0 xor eax,eax dec eax ret .endif mov esi,_lpszSrc mov edi,_lpszDst mov ecx,_dwSrcLen shr ecx, 2 cld @@loop: xor ebx,ebx lodsd mov edx,eax and eax,0ffh mov al, BYTE ptr [offset base64table + eax] .if al == 255 xor eax,eax dec eax ret .endif shl ebx,6 or bl,al shr edx,8 mov eax,edx and eax,0ffh mov al, BYTE ptr [offset base64table + eax] .if al == 255 xor eax,eax dec eax ret .endif shl ebx,6 or bl,al shr edx,8 mov eax,edx and eax,0ffh mov al, BYTE ptr [offset base64table + eax] .if al == 255 xor eax,eax dec eax ret .endif shl ebx,6 or bl,al shr edx,8 mov eax,edx and eax,0ffh mov al, BYTE ptr [offset base64table + eax] .if al == 255 xor eax,eax dec eax ret .endif shl ebx,6 or bl,al shr edx,8 mov eax,ebx shl eax,8 bswap eax stosd dec edi dec ecx jnz @@loop xor eax,eax ret _Base64Decode endp
算发参考了老罗的代码 在此表示感谢
程序+代码+参考资料 已打包
base64decode.rar
(4.98 KB)
[[it] 本帖最后由 zklhp 于 2008-8-17 00:34 编辑 [/it]]