<?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>Arquivo para Bitcoin - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/bitcoin/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/bitcoin/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Wed, 09 May 2018 00:49:16 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>
	<item>
		<title>Esquema de Codificação Base58</title>
		<link>https://www.bosontreinamentos.com.br/seguranca/esquema-de-codificacao-base58/</link>
					<comments>https://www.bosontreinamentos.com.br/seguranca/esquema-de-codificacao-base58/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 24 Nov 2017 19:55:35 +0000</pubDate>
				<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Bitcoin]]></category>
		<category><![CDATA[Criptografia]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=11152</guid>

					<description><![CDATA[<p>O que é o Base58 Para representar números grandes (longos) de forma sucinta e compacta, usando pouco símbolos, os sistemas de computador utilizam representações alfanuméricas com uma base numérica maior do que a base 10. Por exemplo, o sistema tradicional de representação numérica que usamos no dia-a-dia é o sistema base 10, que utiliza os numerais de 0 a 9 para representar todos os números. Porém, é muito comum em programação de computadores que endereços de memória sejam representados numericamente, e para isso geralmente usamos o sistema de numeração hexadecimal (base 16), que contém os numerais de 0 a 9, mais as &#8220;letras&#8221; de A a F, que representam os valores numéricos de 10 a 15. Assim, um número representado no sistema hexadecimal é mais curto do que sua representação equivalente em decimal, facilitando as tarefas de digitação, representação e memorização (se necessária). Podemos compactar ainda mais a representação de strings de caracteres e valores numéricos usando sistemas como o Base64, que utiliza as 26 letras do alfabeto latino minúsculas, as 26 letras maiúsculas, 10 numerais (0 a 9) e mais dois caracteres especiais, como &#8220;+&#8221; e &#8220;/&#8221; para a transmissão de dados binários em mídias baseadas em texto, como [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/seguranca/esquema-de-codificacao-base58/">Esquema de Codificação Base58</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O que é o Base58</h2>
<p>Para representar números grandes (longos) de forma sucinta e compacta, usando pouco símbolos, os sistemas de computador utilizam representações alfanuméricas com uma base numérica maior do que a base 10. Por exemplo, o sistema tradicional de representação numérica que usamos no dia-a-dia é o sistema base 10, que utiliza os numerais de 0 a 9 para representar todos os números.</p>
<p>Porém, é muito comum em programação de computadores que endereços de memória sejam representados numericamente, e para isso geralmente usamos o sistema de numeração hexadecimal (base 16), que contém os numerais de 0 a 9, mais as &#8220;letras&#8221; de A a F, que representam os valores numéricos de 10 a 15. Assim, um número representado no sistema hexadecimal é mais curto do que sua representação equivalente em decimal, facilitando as tarefas de digitação, representação e memorização (se necessária).</p>
<p>Podemos compactar ainda mais a representação de strings de caracteres e valores numéricos usando sistemas como o <strong>Base64</strong>, que utiliza as 26 letras do alfabeto latino minúsculas, as 26 letras maiúsculas, 10 numerais (0 a 9) e mais dois caracteres especiais, como &#8220;+&#8221; e &#8220;/&#8221; para a transmissão de dados binários em mídias baseadas em texto, como e-mails. O sistema Base64 é muito utilizado para adicionar anexos binários em e-mails.</p>
<h3>Base58</h3>
<p>Já o sistema <strong>Base58</strong> é um formato de codificação binária baseado em texto desenvolvido para uso em aplicações de criptomoedas, como o <strong>Bitcoin</strong>. Ele oferece um balanço entre a representação compacta, facilidade de leitura, detecção e prevenção de erros. O Base58 é um subconjunto do sistema Base64, utilizando as letras do alfabeto maiúsculas e minúsculas, números, e omitindo alguns caracteres que muitas vezes são confundidos com outros caracteres, e que podem parecer idênticos dependendo da fonte usada na representação do texto.</p>
<p>No caso do Base58, os caracteres que não são utilizados são o 0 (zero), O (letra o maiúscula), I (letra i maiúscula), l (letra L minúscula) e os símbolos &#8220;+&#8221; e &#8220;/&#8221;.</p>
<p>Abaixo temos o alfabeto Base58 completo:</p>
<p style="text-align: center;"><span style="color: #000080;"><strong>123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz</strong></span></p>
<p>O Base58 foi projetado especificamente para que seja possível humanos entrarem com dados manualmente, ou ainda copiá-los de alguma fonte visualmente.</p>
<p>As principais aplicações do Base58 são a criação de endereços de Bitcoin, endereços de Ripple (outra criptomoeda) e URLs encurtadas para o Flickr, entre outras.</p>
<h3>Base58Check</h3>
<p>O <strong>Base58Check</strong> é um formato de codificação Base58 que, além de codificar os dados, também registra o tipo dos dados na string formada, e inclui detecção de erros nos últimos caracteres da codificação.</p>
<p>O checksum (soma de verificação para detecção de erros) consiste em quatro bytes adicionais concatenados no final dos dados que são codificados. O checksum é derivado de um <a href="http://www.bosontreinamentos.com.br/seguranca/criptografia-tipos-simetrica-assimetrica-e-funcoes-de-hash-02/" target="_blank" rel="noopener noreferrer">hash</a> dos dados codificados, e assim pode ser utilizado para detectar e prevenir modificação dos dados e erros de digitação. </p>
<p>Quando um software recebe uma string codificada com Base58Check, ele calcula o checksum dos dados e o compara com o checksum incluído no código e si. Se os valores não baterem, um ero ocorreu na transmissão dos dados e o dado é considerado inválido. Desta forma, por exemplo, evita-se que um endereço Bitcoin digitado erroneamente seja aceito por um software de carteira como um destino válido de fundos, um erro que resultaria em perda do dinheiro transferido.</p>
<p>Para converter dados brutos em formato Base58Check, primeiramente adicionamos um prefixo ao dado, chamado de &#8220;Byte de Versão&#8221;, que serve para identificar com facilidade o tipo de dado que está sendo codificado. Por exemplo, para um endereço de bitcoin o prefixo será zero, enquanto o prefixo usado para codificar uma chave privada será o número 128 (em hexadecimal, 0x80).</p>
<p>Após adicionar o prefixo, é computado um hash duplo do dado, usando o algoritmo SHA256 duas vezes, como segue:</p>
<pre><span style="color: #800080;"><strong>soma de verificação = SHA256(Sha256(prefixo + dado))</strong></span></pre>
<p>O resultado será uma string de 32 bytes, dos quais usa-se apenas os quatro primeiros. Esses quatro bytes servem como código de verificação de erros (não de correção!), e é o que chamamos de &#8220;Checksum&#8221;. Esse valor é concatenado o final da string de dados a ser transmitida.</p>
<p>Assim, temos no final ma string composta por um prefixo, dados e um checksum. Esse conjunto é então codificado usando o formato Base58 que vimos na seção anterior.</p>
<p>Uma das principais aplicações do Base58Check é a codificação de dados em bitcoin para apresentação ao usuário, pois os dados se tornam compactos, fáceis de ler e de detectar erros. Os endereços de bitcoin codificados desta forma sempre iniciam com o caractere 1 (um).</p>
<p>Como exemplo, veja o endereço público para contribuições de bitcoin para a Bóson Treinamentos (caso queira contribuir com qualquer valor, fique à vontade!):</p>
<h4><strong>1F2zucNtHimYR2dpnGxpX1fnoMn5xKM5S6</strong></h4>
<p>Como esperado, o endereço (que está codificado) se inicia com o valor 1.</p>
<p>É isso aí! No próximo tutorial vamos continuar explorando as tecnologias por trás das criptomoedas. Até mais!</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/seguranca/esquema-de-codificacao-base58/">Esquema de Codificação Base58</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/seguranca/esquema-de-codificacao-base58/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
