| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 799 人关注过本帖
标题:base64解码函数(win32汇编)
收藏  订阅  推荐  打印 
本主题由 zklhp 于 2008-10-17 13:05 设置高亮
zklhp
Rank: 12Rank: 12Rank: 12
来自:china
等级:版主
威望:9
帖子:738
积分:8651
注册:2007-7-10
base64解码函数(win32汇编)

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bccn.net
*/ 作者: zklhp   E-mail:zklhp@sina.com  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@sina.com
;时间: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
算发参考了老罗的代码 在此表示感谢

程序+代码+参考资料 已打包



[ 本帖最后由 zklhp 于 2008-8-17 00:34 编辑 ]
附件: 只有本站会员才能下载或查看附件,请您 登录注册
搜索更多相关主题的帖子: 汇编  解码  dup  lpszSrc  
2008-8-16 22:07
zklhp
Rank: 12Rank: 12Rank: 12
来自:china
等级:版主
威望:9
帖子:738
积分:8651
注册:2007-7-10

过两天 把偶写的Email sender发出来 呵呵
2008-8-17 00:35
阳小子
Rank: 1
等级:新手上路
帖子:18
积分:284
注册:2008-8-19

不错,收藏了。
2008-8-19 21:33
zklhp
Rank: 12Rank: 12Rank: 12
来自:china
等级:版主
威望:9
帖子:738
积分:8651
注册:2007-7-10

zklhp 在 2008-8-16 22:07 的发言:

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bccn.net
*/ 作者: zklhp   E-mail:zklhp@sina.com  QQ:493165744
*/ 时间: 200 ...
貌似发的 时候少个文件 编译不了

其实主要看看那个函数就是了 呵呵
2008-9-27 16:54
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.061184 second(s), 10 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved