<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IONCANNON &#187; base64</title>
	<atom:link href="http://www.ioncannon.net/tag/base64/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ioncannon.net</link>
	<description>Thoughts on Software Development and Engineering</description>
	<lastBuildDate>Tue, 03 Jan 2012 13:59:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<atom:link rel='hub' href='http://www.ioncannon.net/?pushpress=hub'/>
		<item>
		<title>Howto base64 decode with C/C++ and OpenSSL</title>
		<link>http://www.ioncannon.net/programming/122/howto-base64-decode-with-cc-and-openssl/</link>
		<comments>http://www.ioncannon.net/programming/122/howto-base64-decode-with-cc-and-openssl/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 13:27:47 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[openssl]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/cc/122/howto-base64-decode-with-cc-and-openssl/</guid>
		<description><![CDATA[Someone asked for an example of decoding with OpenSSL on the Howto base64 encode with C/C++ and OpenSSL post. So here it is: Tags: C, C++, OpenSSL]]></description>
			<content:encoded><![CDATA[<p>Someone asked for an example of decoding with OpenSSL on the <a href="http://www.ioncannon.net/cc/34/howto-base64-encode-with-cc-and-openssl/">Howto base64 encode with C/C++ and OpenSSL</a> post. So here it is:</p>
<div class="codesnip-container" >
<div class="c codesnip" style="font-family:monospace;"><span class="co2">#include &lt;string.h&gt;</span></p>
<p><span class="co2">#include &lt;openssl/sha.h&gt;</span><br />
<span class="co2">#include &lt;openssl/hmac.h&gt;</span><br />
<span class="co2">#include &lt;openssl/evp.h&gt;</span><br />
<span class="co2">#include &lt;openssl/bio.h&gt;</span><br />
<span class="co2">#include &lt;openssl/buffer.h&gt;</span></p>
<p><span class="kw4">char</span> <span class="sy0">*</span>unbase64<span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">char</span> <span class="sy0">*</span>input<span class="sy0">,</span> <span class="kw4">int</span> length<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span> <span class="sy0">**</span>argv<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw4">char</span> <span class="sy0">*</span>output <span class="sy0">=</span> unbase64<span class="br0">&#40;</span><span class="st0">&quot;WU9ZTyEA<span class="es1">\n</span><span class="es5">\0</span>&quot;</span><span class="sy0">,</span> strlen<span class="br0">&#40;</span><span class="st0">&quot;WU9ZTyEA<span class="es1">\n</span><span class="es5">\0</span>&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Unbase64: *%s*<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> output<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; free<span class="br0">&#40;</span>output<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">char</span> <span class="sy0">*</span>unbase64<span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">char</span> <span class="sy0">*</span>input<span class="sy0">,</span> <span class="kw4">int</span> length<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; BIO <span class="sy0">*</span>b64<span class="sy0">,</span> <span class="sy0">*</span>bmem<span class="sy0">;</span></p>
<p>&nbsp; <span class="kw4">char</span> <span class="sy0">*</span>buffer <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span>length<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; memset<span class="br0">&#40;</span>buffer<span class="sy0">,</span> 0<span class="sy0">,</span> length<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; b64 <span class="sy0">=</span> BIO_new<span class="br0">&#40;</span>BIO_f_base64<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; bmem <span class="sy0">=</span> BIO_new_mem_buf<span class="br0">&#40;</span>input<span class="sy0">,</span> length<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; bmem <span class="sy0">=</span> BIO_push<span class="br0">&#40;</span>b64<span class="sy0">,</span> bmem<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; BIO_read<span class="br0">&#40;</span>bmem<span class="sy0">,</span> buffer<span class="sy0">,</span> length<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; BIO_free_all<span class="br0">&#40;</span>bmem<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw1">return</span> buffer<span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Tags: <a href="http://technorati.com/tag/C" rel="tag">C</a>, <a href="http://technorati.com/tag/C%2B%2B" rel="tag">C++</a>, <a href="http://technorati.com/tag/OpenSSL" rel="tag">OpenSSL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/programming/122/howto-base64-decode-with-cc-and-openssl/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Howto base64 encode with C/C++ and OpenSSL</title>
		<link>http://www.ioncannon.net/programming/34/howto-base64-encode-with-cc-and-openssl/</link>
		<comments>http://www.ioncannon.net/programming/34/howto-base64-encode-with-cc-and-openssl/#comments</comments>
		<pubDate>Tue, 11 Apr 2006 21:26:32 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[openssl]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/uncategorized/34/howto-base64-encode-with-cc-and-openssl/</guid>
		<description><![CDATA[I&#039;ve been doing a little C programming lately and I have found that if you have a up to date distribution of linux there are a lot of libraries out there that make doing things you do in other languages like java easier. As I have time I&#039;m going to post some examples of what [...]]]></description>
			<content:encoded><![CDATA[<p>I&#039;ve been doing a little C programming lately and I have found that if you have a up to date distribution of linux there are a lot of libraries out there that make doing things you do in other languages like java easier. </p>
<p><span id="more-34"></span></p>
<p>As I have time I&#039;m going to post some examples of what I have found. The first here is how to base64 encode a chunk of memory using OpenSSL.</p>
<p><a></a></p>
<div class="codesnip-container" >
<div class="c codesnip" style="font-family:monospace;"><span class="co2">#include &lt;string.h&gt;</span></p>
<p><span class="co2">#include &lt;openssl/sha.h&gt;</span><br />
<span class="co2">#include &lt;openssl/hmac.h&gt;</span><br />
<span class="co2">#include &lt;openssl/evp.h&gt;</span><br />
<span class="co2">#include &lt;openssl/bio.h&gt;</span><br />
<span class="co2">#include &lt;openssl/buffer.h&gt;</span></p>
<p><span class="kw4">char</span> <span class="sy0">*</span>base64<span class="br0">&#40;</span><span class="kw4">const</span> <span class="kw4">unsigned</span> <span class="kw4">char</span> <span class="sy0">*</span>input<span class="sy0">,</span> <span class="kw4">int</span> length<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span> <span class="sy0">**</span>argv<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw4">char</span> <span class="sy0">*</span>output <span class="sy0">=</span> base64<span class="br0">&#40;</span><span class="st0">&quot;YOYO!&quot;</span><span class="sy0">,</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="st0">&quot;YOYO!&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Base64: *%s*<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> output<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; free<span class="br0">&#40;</span>output<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">char</span> <span class="sy0">*</span>base64<span class="br0">&#40;</span><span class="kw4">const</span> <span class="kw4">unsigned</span> <span class="kw4">char</span> <span class="sy0">*</span>input<span class="sy0">,</span> <span class="kw4">int</span> length<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; BIO <span class="sy0">*</span>bmem<span class="sy0">,</span> <span class="sy0">*</span>b64<span class="sy0">;</span><br />
&nbsp; BUF_MEM <span class="sy0">*</span>bptr<span class="sy0">;</span></p>
<p>&nbsp; b64 <span class="sy0">=</span> BIO_new<span class="br0">&#40;</span>BIO_f_base64<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; bmem <span class="sy0">=</span> BIO_new<span class="br0">&#40;</span>BIO_s_mem<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; b64 <span class="sy0">=</span> BIO_push<span class="br0">&#40;</span>b64<span class="sy0">,</span> bmem<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; BIO_write<span class="br0">&#40;</span>b64<span class="sy0">,</span> input<span class="sy0">,</span> length<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; BIO_flush<span class="br0">&#40;</span>b64<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; BIO_get_mem_ptr<span class="br0">&#40;</span>b64<span class="sy0">,</span> <span class="sy0">&amp;</span>bptr<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw4">char</span> <span class="sy0">*</span>buff <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span>bptr<span class="sy0">-&gt;</span>length<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; memcpy<span class="br0">&#40;</span>buff<span class="sy0">,</span> bptr<span class="sy0">-&gt;</span>data<span class="sy0">,</span> bptr<span class="sy0">-&gt;</span>length<span class="sy0">-</span>1<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; buff<span class="br0">&#91;</span>bptr<span class="sy0">-&gt;</span>length<span class="sy0">-</span>1<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></p>
<p>&nbsp; BIO_free_all<span class="br0">&#40;</span>b64<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw1">return</span> buff<span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>And to compile this just use the following command:</p>
<pre>
cc -o base64 base64.c -lssl
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/programming/34/howto-base64-encode-with-cc-and-openssl/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

