<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe einen base64 codierten string und möchte ihn decodieren,<br />
Hier in der suche bin ich leider nicht fündig geworden, vieleicht habt Ihr einen Tip wo ich nachschauen könnte...</p>
<p>MfG T1c4L</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/76019/hi-weis-jemand-wo-ich-in-der-msdn-was-finde-um-base64-zu-decodieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 02:44:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/76019.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Jun 2004 08:26:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren? on Mon, 07 Jun 2004 08:26:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe einen base64 codierten string und möchte ihn decodieren,<br />
Hier in der suche bin ich leider nicht fündig geworden, vieleicht habt Ihr einen Tip wo ich nachschauen könnte...</p>
<p>MfG T1c4L</p>
]]></description><link>https://www.c-plusplus.net/forum/post/534815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/534815</guid><dc:creator><![CDATA[T1c4L]]></dc:creator><pubDate>Mon, 07 Jun 2004 08:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren? on Mon, 07 Jun 2004 12:43:05 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>habe gerade mal gesucht. Gehört zu ATL -&gt; brauchst als include &quot;atlenc.h&quot;. In der MSDN unter Base64Decode / Base64Encode mal nachschauen. Habs persönlich noch nie getestet. Aber vielleicht auch mal nach den Begriffen googeln....</p>
<p>*winke*<br />
Hellsgore</p>
]]></description><link>https://www.c-plusplus.net/forum/post/535050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/535050</guid><dc:creator><![CDATA[Hellsgore]]></dc:creator><pubDate>Mon, 07 Jun 2004 12:43:05 GMT</pubDate></item><item><title><![CDATA[Reply to hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren? on Mon, 07 Jun 2004 13:49:28 GMT]]></title><description><![CDATA[<p>ich habe mal in der MSDN geschaut nach einem Base64Decode allerdings meldet er keine funde... habe die April2000 hier auf der Arbeit installiert...kann es daran liegen?</p>
<p>ich schau mal in Google....</p>
<p>Danke schonmal trotzdem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>MfG T1c4L</p>
]]></description><link>https://www.c-plusplus.net/forum/post/535106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/535106</guid><dc:creator><![CDATA[T1c4L]]></dc:creator><pubDate>Mon, 07 Jun 2004 13:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren? on Mon, 07 Jun 2004 13:53:58 GMT]]></title><description><![CDATA[<p>Ist wohl ein bissle neuer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Allerdings benutze ich VS 2003.</p>
<p>Guck mal da:<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfbase64decode.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfbase64decode.asp</a></p>
<p>Gibt aber auch bei Codeproject Beispiele zum Ent- und Verschlüsseln.</p>
<p>*winke*<br />
Hellsgore</p>
]]></description><link>https://www.c-plusplus.net/forum/post/535113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/535113</guid><dc:creator><![CDATA[Hellsgore]]></dc:creator><pubDate>Mon, 07 Jun 2004 13:53:58 GMT</pubDate></item><item><title><![CDATA[Reply to hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren? on Mon, 07 Jun 2004 14:20:02 GMT]]></title><description><![CDATA[<p>Hier ne Klasse von PJ.<br />
Habs etwas abgeändert das es mit std::sting geht.</p>
<p>cpp</p>
<pre><code class="language-cpp">/*
Module : Base64Coder.CPP
Purpose: Implementation for the Base64 encoder / decoder class
Created: PJN / 20-06-2000
History: None

Copyright (c) 1998 - 2004 by PJ Naughter.  
All rights reserved.

*/

//////////////// Includes ////////////////////////////////////////////

#include &quot;Base64Coder.h&quot;

//////////////// Macros / Locals /////////////////////////////////////

static char	Base64Digits[] = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;;
BOOL CBase64Coder::m_Init		= FALSE;
char CBase64Coder::m_DecodeTable[256];

#ifndef PAGESIZE
#define PAGESIZE					4096
#endif

#ifndef ROUNDTOPAGE
#define ROUNDTOPAGE(a)			(((a/4096)+1)*4096)
#endif

////////////////// Implementation ////////////////////////////////////

CBase64Coder::CBase64Coder() : m_pDBuffer(NULL), m_pEBuffer(NULL),
	                           m_nDBufLen(0),	m_nEBufLen(0)
{
}

CBase64Coder::~CBase64Coder()
{
	if (m_pDBuffer != NULL)
  {
		delete [] m_pDBuffer;
    m_pDBuffer = NULL;
  }

	if (m_pEBuffer != NULL)
  {
		delete [] m_pEBuffer;
    m_pEBuffer = NULL;
  }
}

char* CBase64Coder::DecodedMessage() const 
{ 
	return (char*) m_pDBuffer;
}

char* CBase64Coder::EncodedMessage() const
{ 
	return (char*) m_pEBuffer;
}

LONG CBase64Coder::DecodedMessageSize() const 
{ 
	return m_nDDataLen;
}

LONG CBase64Coder::EncodedMessageSize() const
{ 
	return m_nEDataLen;
}

void CBase64Coder::AllocEncode(DWORD nSize)
{
	if (m_nEBufLen &lt; nSize)
	{
		if (m_pEBuffer != NULL)
			delete [] m_pEBuffer;

		m_nEBufLen = ROUNDTOPAGE(nSize);
		m_pEBuffer = new BYTE[m_nEBufLen];
	}

	::memset(m_pEBuffer,0, m_nEBufLen);
	m_nEDataLen = 0;
}

void CBase64Coder::AllocDecode(DWORD nSize)
{
	if (m_nDBufLen &lt; nSize)
	{
		if (m_pDBuffer != NULL)
			delete [] m_pDBuffer;

		m_nDBufLen = ROUNDTOPAGE(nSize);
		m_pDBuffer = new BYTE[m_nDBufLen];
	}

	::memset(m_pDBuffer, 0 ,m_nDBufLen);  // ersetzen mit memset
	m_nDDataLen = 0;
}

void CBase64Coder::SetEncodeBuffer(const unsigned char* pBuffer, DWORD nBufLen)
{
	DWORD	i = 0;

	AllocEncode(nBufLen);
	while(i &lt; nBufLen)
	{
		if (!_IsBadMimeChar(pBuffer[i]))
		{
			m_pEBuffer[m_nEDataLen] = pBuffer[i];
			m_nEDataLen++;
		}
		i++;
	}
}

void CBase64Coder::SetDecodeBuffer(const unsigned char* pBuffer, DWORD nBufLen)
{
	AllocDecode(nBufLen);
	::memcpy(m_pDBuffer, pBuffer, nBufLen);
	m_nDDataLen = nBufLen;
}

void CBase64Coder::Encode(const unsigned char* pBuffer, DWORD nBufLen)
{
	SetDecodeBuffer(pBuffer, nBufLen);
	AllocEncode(nBufLen * 2);

	TempBucket Raw;
	DWORD	nIndex	= 0;
	while ((nIndex + 3) &lt;= nBufLen)
	{
		Raw.Clear();
		::memcpy(&amp;Raw, m_pDBuffer + nIndex, 3);   // Kann ersetzt werden mit memcpy
		Raw.nSize = 3;
		_EncodeToBuffer(Raw, m_pEBuffer + m_nEDataLen);
		nIndex += 3;
		m_nEDataLen	+= 4;
	}

	if (nBufLen &gt; nIndex)
	{
		Raw.Clear();
		Raw.nSize = (BYTE) (nBufLen - nIndex);
		::memcpy(&amp;Raw, m_pDBuffer + nIndex, nBufLen - nIndex);
		_EncodeToBuffer(Raw, m_pEBuffer + m_nEDataLen);
		m_nEDataLen += 4;
	}
}

void CBase64Coder::Encode(const char *szMessage)
{
	if (szMessage != NULL)
		Encode((const unsigned char*)szMessage, strlen(szMessage));
}

void CBase64Coder::Decode(const unsigned char* pBuffer, DWORD dwBufLen)
{
	if (!CBase64Coder::m_Init)
		_Init();

	SetEncodeBuffer(pBuffer, dwBufLen);
	AllocDecode(dwBufLen);

	TempBucket Raw;
	DWORD	nIndex = 0;
	while((nIndex + 4) &lt;= m_nEDataLen)
	{
		Raw.Clear();
		Raw.nData[0] = CBase64Coder::m_DecodeTable[m_pEBuffer[nIndex&rsqb;&rsqb;;
		Raw.nData[1] = CBase64Coder::m_DecodeTable[m_pEBuffer[nIndex + 1&rsqb;&rsqb;;
		Raw.nData[2] = CBase64Coder::m_DecodeTable[m_pEBuffer[nIndex + 2&rsqb;&rsqb;;
		Raw.nData[3] = CBase64Coder::m_DecodeTable[m_pEBuffer[nIndex + 3&rsqb;&rsqb;;

		if (Raw.nData[2] == 255)
			Raw.nData[2] = 0;
		if (Raw.nData[3] == 255)
			Raw.nData[3] = 0;

		Raw.nSize = 4;
		_DecodeToBuffer(Raw, m_pDBuffer + m_nDDataLen);
		nIndex += 4;
		m_nDDataLen += 3;
	}

   // If nIndex &lt; m_nEDataLen, then we got a decode message without padding.
   // We may want to throw some kind of warning here, but we are still required
   // to handle the decoding as if it was properly padded.
	if (nIndex &lt; m_nEDataLen)
	{
		Raw.Clear();
		for (DWORD i=nIndex; i&lt;m_nEDataLen; i++)
		{
			Raw.nData[i - nIndex] = CBase64Coder::m_DecodeTable[m_pEBuffer[i&rsqb;&rsqb;;
			Raw.nSize++;
			if(Raw.nData[i - nIndex] == 255)
				Raw.nData[i - nIndex] = 0;
		}

		_DecodeToBuffer(Raw, m_pDBuffer + m_nDDataLen);
		m_nDDataLen += (m_nEDataLen - nIndex);
	}
}

void CBase64Coder::Decode(const char * szMessage)
{
	if (szMessage != NULL)
		Decode((const unsigned char*)szMessage, strlen(szMessage));
}

DWORD CBase64Coder::_DecodeToBuffer(const TempBucket &amp;Decode, unsigned char* pBuffer)
{
	TempBucket	Data;
	DWORD	nCount = 0;

	_DecodeRaw(Data, Decode);

	for (int i=0; i&lt;3; i++)
	{
		pBuffer[i] = Data.nData[i];
		if(pBuffer[i] != 255)
			nCount++;
	}

	return nCount;
}

void CBase64Coder::_EncodeToBuffer(const TempBucket &amp;Decode, unsigned char* pBuffer)
{
	TempBucket Data;

	_EncodeRaw(Data, Decode);

	for (int i=0; i&lt;4; i++)
		pBuffer[i] = Base64Digits[Data.nData[i&rsqb;&rsqb;;

	switch (Decode.nSize)
	{
	  case 1:
		  pBuffer[2] = '=';
	  case 2:
		  pBuffer[3] = '=';
	}
}

void CBase64Coder::_DecodeRaw(TempBucket &amp;Data, const TempBucket &amp;Decode)
{
	BYTE nTemp;

	Data.nData[0] = Decode.nData[0];
	Data.nData[0] &lt;&lt;= 2;

	nTemp = Decode.nData[1];
	nTemp &gt;&gt;= 4;
	nTemp &amp;= 0x03;
	Data.nData[0] |= nTemp;

	Data.nData[1] = Decode.nData[1];
	Data.nData[1] &lt;&lt;= 4;

	nTemp = Decode.nData[2];
	nTemp &gt;&gt;= 2;
	nTemp &amp;= 0x0F;
	Data.nData[1] |= nTemp;

	Data.nData[2] = Decode.nData[2];
	Data.nData[2] &lt;&lt;= 6;
	nTemp = Decode.nData[3];
	nTemp &amp;= 0x3F;
	Data.nData[2] |= nTemp;
}

void CBase64Coder::_EncodeRaw(TempBucket &amp;Data, const TempBucket &amp;Decode)
{
	BYTE nTemp;

	Data.nData[0] = Decode.nData[0];
	Data.nData[0] &gt;&gt;= 2;

	Data.nData[1] = Decode.nData[0];
	Data.nData[1] &lt;&lt;= 4;
	nTemp = Decode.nData[1];
	nTemp &gt;&gt;= 4;
	Data.nData[1] |= nTemp;
	Data.nData[1] &amp;= 0x3F;

	Data.nData[2] = Decode.nData[1];
	Data.nData[2] &lt;&lt;= 2;

	nTemp = Decode.nData[2];
	nTemp &gt;&gt;= 6;

	Data.nData[2] |= nTemp;
	Data.nData[2] &amp;= 0x3F;

	Data.nData[3] = Decode.nData[2];
	Data.nData[3] &amp;= 0x3F;
}

BOOL CBase64Coder::_IsBadMimeChar(BYTE nData)
{
	switch(nData)
	{
		case '\r': case '\n': case '\t': case ' ' :
		case '\b': case '\a': case '\f': case '\v':
			return TRUE;
		default:
			return FALSE;
	}
}

void CBase64Coder::_Init()
{  
  // Initialize Decoding table.
	int	i;
	for (i=0; i&lt;256; i++)
		CBase64Coder::m_DecodeTable[i] = -2;

	for (i=0; i&lt;64; i++)
	{
		CBase64Coder::m_DecodeTable[Base64Digits[i&rsqb;&rsqb;	= (char) i;
		CBase64Coder::m_DecodeTable[Base64Digits[i]|0x80] = (char) i;
	}

	CBase64Coder::m_DecodeTable['=']	= -1;
	CBase64Coder::m_DecodeTable['='|0x80] = -1;
	CBase64Coder::m_Init = TRUE;
}
</code></pre>
<p>Header</p>
<pre><code class="language-cpp">/*
Module : Base64Coder.CPP
Purpose: Definition for the Base64 encoder / decoder class
Created: PJN / 20-06-2000
History: None

Copyright (c) 1998 - 2004 by PJ Naughter.  
All rights reserved.

*/

/////////////////////////////// Defines ///////////////////////////////////////
#ifndef __BASE64CODER_H__
#define __BASE64CODER_H__

#include &lt;string&gt;
#include &lt;cctype&gt;

typedef unsigned long 	ULONG;
typedef long 	LONG;
typedef unsigned long 	DWORD;
typedef int 		BOOL;
typedef unsigned char	BYTE;
typedef unsigned short	WORD;
#define FALSE 0
#define TRUE 1

/////////////////////////////// Classes ///////////////////////////////////////

class CBase64Coder  
{
public:
//Constructors / Destructors
	CBase64Coder();
	virtual ~CBase64Coder();

//Methods
	virtual void	 Encode(const unsigned char*, unsigned long);
	virtual void	 Decode(const unsigned char*, unsigned long);
	virtual void	 Encode(const char* sMessage);
	virtual void	 Decode(const char* sMessage);
	virtual char*  DecodedMessage() const;
	virtual char*  EncodedMessage() const;
	virtual long	 DecodedMessageSize() const;
	virtual long	 EncodedMessageSize() const;

  /** Encodes a character of the default charset into the hexadecimal format
    * %XX.
    * &lt;a name=&quot;CSE-hexEncode&quot;&gt;&lt;/a&gt;
    * @param c The character to be encoded.
    * @return The encoded string.
    * @deffunc static&amp;nbsp; std::string hexEncode(const unsigned char&amp; c)
    */
   std::string hexEncode(
      const unsigned char&amp; c)
    throw ()
  {
    std::string result(&quot;%&quot;);
    unsigned char v[2]= { c/16, c%16 };
    if (v[0] &lt;= 9) result+= (v[0] + '0');
    else result+= (v[0] - 10 + 'A');
    if (v[1] &lt;= 9) result+= (v[1] + '0');
    else result+= (v[1] - 10 + 'A');
    return result;
  }

  /** Encodes a string into the URL-encoded format.
    * Such strings can be found e.g. in raw HTTP request parameters.
    * This function has been implemented after RFC2068.
    * &lt;a name=&quot;CSE-urlEncode&quot;&gt;&lt;/a&gt;
    * @param s The string to be encoded.
    * @return The encoded string.
    * @deffunc static&amp;nbsp; std::string urlEncode(const std::string&amp; s)
    */
  std::string urlEncode(  // as defined in RFC2068
      const std::string&amp;s)
    throw ()
  {
    std::string result;
    unsigned char c;
    for (unsigned int p= 0; p &lt; s.size(); ++p) {
      c= s[p];
      if ((c &lt;= 31) || (c &gt;= 127))  // CTL, &gt;127
        result+= hexEncode(c);
      else switch (c) {
      case ';':
      case '/':
      case '?':
      case ':':
      case '@':
      case '&amp;':
      case '=':
      case '+':  // until here: reserved
      case '&quot;':
      case '#':
      case '%':
      case '&lt;':
      case '&gt;':  // until here: unsafe
        result+= hexEncode(c);
        break;
      case ' ':  // SP
        result+= '+';
        break;
      default:  // no need to encode
        result+= c;
        break;
      }
    }
    return result;
  }

protected:
// Internal bucket class.
	class TempBucket
	{
	public:
		unsigned char 		nData[4];
		unsigned char 		nSize;
		void		Clear() { memset(nData, 0,4); nSize = 0; };
	};

//Variables
	unsigned char*	m_pDBuffer;
	unsigned char*	m_pEBuffer;
	DWORD	m_nDBufLen;
	DWORD	m_nEBufLen;
	DWORD	m_nDDataLen;
	DWORD	m_nEDataLen;
	static char m_DecodeTable[256];
	static BOOL m_Init;

//Methods
	virtual void	 AllocEncode(DWORD);
	virtual void	 AllocDecode(DWORD);
	virtual void	 SetEncodeBuffer(const unsigned char* pBuffer, DWORD nBufLen);
	virtual void	 SetDecodeBuffer(const unsigned char* pBuffer, DWORD nBufLen);
	virtual void	_EncodeToBuffer(const TempBucket &amp;Decode, unsigned char* pBuffer);
	virtual ULONG	_DecodeToBuffer(const TempBucket &amp;Decode, unsigned char* pBuffer);
	virtual void	_EncodeRaw(TempBucket &amp;, const TempBucket &amp;);
	virtual void	_DecodeRaw(TempBucket &amp;, const TempBucket &amp;);
	virtual BOOL	_IsBadMimeChar(unsigned char );
	void					_Init();

};

#endif //__BASE64CODER_H__
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/535145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/535145</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Mon, 07 Jun 2004 14:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to hi, weis jemand wo ich in der MSDN was finde um Base64 zu decodieren? on Mon, 07 Jun 2004 14:27:35 GMT]]></title><description><![CDATA[<p>Vielen dank nochmal an euch! das ist mir schonmal sehr hilfreich und ich denke in der Not werde ich das PJ umschreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>auf meinem &quot;privat&quot; notebook hier auf der Arbeit habe ich auch das VC .Net 2003 und hier gibts in der MSDN auch ne tolle methode zum decodieren.</p>
<p>Auf dem &quot;Arbeitspc&quot; ist leider nur VC6 drauf mit MSDN July 2001 (gerade am installieren) hoffe das ich die methode dort finde...</p>
<p>Danke euch allen nochmals <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> ihr habt mir viel geholfen,<br />
bin aber fuer mehr hilfe immer offen!!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>MfG<br />
euer T1c4L</p>
]]></description><link>https://www.c-plusplus.net/forum/post/535156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/535156</guid><dc:creator><![CDATA[T1c4L]]></dc:creator><pubDate>Mon, 07 Jun 2004 14:27:35 GMT</pubDate></item></channel></rss>