首页 > 代码库 > win api 实现 base64编码、解码
win api 实现 base64编码、解码
最近在写小玩意,用到了base64编码,但是考虑到体积大小,网上的多种实现都是利用开源的代码,这就增加了其大小。我想win api能不能实现base64编码、解码。通过一通乱搜,还有收获。就有了以下代码
#pragma comment(lib,"crypt32.lib") LPSTR Base64Encode(LPBYTE lpBuffer,DWORD dwLen) { DWORD dwNeed; LPSTR lpBase64Str ; DWORD dwIndex ; DWORD dwIndexJ; dwNeed = 0; lpBase64Str = NULL ; CryptBinaryToStringA(lpBuffer,dwLen,CRYPT_STRING_BASE64,NULL,&dwNeed); if (dwNeed) { lpBase64Str = (LPSTR)malloc(dwNeed); ZeroMemory(lpBase64Str,dwNeed); CryptBinaryToStringA(lpBuffer,dwLen,CRYPT_STRING_BASE64,lpBase64Str,&dwNeed); dwIndex = 0; while(*(lpBase64Str+dwIndex)!=0) { if (*(lpBase64Str+dwIndex) == 0x0d || *(lpBase64Str+dwIndex)==0x0a) { dwIndexJ = dwIndex +1; while (*(lpBase64Str+dwIndexJ)!=0) { *(lpBase64Str+dwIndexJ-1)= *(lpBase64Str+dwIndexJ); dwIndexJ ++ ; } *(lpBase64Str+dwIndexJ-1) = 0 ; }else { dwIndex ++ ; } } } return lpBase64Str ; } LPBYTE Base64Decode(LPSTR lpBase64Str,LPDWORD lpdwLen) { DWORD dwLen ; DWORD dwNeed ; LPBYTE lpBuffer ; dwLen = strlen(lpBase64Str); dwNeed = 0; CryptStringToBinaryA(lpBase64Str,0,CRYPT_STRING_BASE64,NULL,&dwNeed,NULL,NULL); if (dwNeed) { lpBuffer = (LPBYTE)malloc(dwNeed); CryptStringToBinaryA(lpBase64Str,0,CRYPT_STRING_BASE64,lpBuffer,&dwNeed,NULL,NULL); *lpdwLen = dwNeed ; } return lpBuffer ; }
仅供参考
win api 实现 base64编码、解码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。