Here is an example using cryptographic API functions to encode to base64 format and decode the result :
.386
.model flat,stdcall
option casemap:none
include Base64.inc
.data
MyStr db 'This is a test.',0
m1 db 'String MyStr converted to base64 = ',0
m2 db 13,10,'Base64 data BinData converted to string = ',0
binSize dd STRING_SIZE
MyStr2size dd STRING_SIZE
.data?
BinData db STRING_SIZE dup(?)
MyStr2 db STRING_SIZE dup(?)
.code
start:
invoke lstrlen,ADDR MyStr
invoke CryptBinaryToString,ADDR MyStr,eax,\
CRYPT_STRING_BASE64,ADDR BinData,\
ADDR binSize
invoke StdOut,ADDR m1
invoke StdOut,ADDR BinData
invoke CryptStringToBinary,ADDR BinData,0,\
CRYPT_STRING_BASE64,ADDR MyStr2,\
ADDR MyStr2size,0,0
invoke StdOut,ADDR m2
invoke StdOut,ADDR MyStr2
invoke ExitProcess,eax
OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
StdOut PROC _string:DWORD
sub esp,2*4
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov DWORD PTR [esp+4],eax
invoke lstrlen,DWORD PTR [esp+12]
mov edx,esp
invoke WriteFile,DWORD PTR [esp+20],\
DWORD PTR [esp+24],\
eax,edx,0
add esp,2*4
retn 4
StdOut ENDP
OPTION PROLOGUE:PrologueDef
OPTION EPILOGUE:EpilogueDef
END start