<?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>仮想通貨（暗号資産） アーカイブ - Archive of Yone</title>
	<atom:link href="https://elite-lane.com/tag/%E4%BB%AE%E6%83%B3%E9%80%9A%E8%B2%A8%EF%BC%88%E6%9A%97%E5%8F%B7%E8%B3%87%E7%94%A3%EF%BC%89/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Wed, 29 Sep 2021 15:48:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.3</generator>

<image>
	<url>https://elite-lane.com/wp-content/uploads/2018/07/cropped-greenapple-logo2-1-32x32.jpg</url>
	<title>仮想通貨（暗号資産） アーカイブ - Archive of Yone</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【ビットコイン･仕組み】ビットコインアドレスの作り方</title>
		<link>https://elite-lane.com/secret-key-public-key-bitcoin-address/</link>
					<comments>https://elite-lane.com/secret-key-public-key-bitcoin-address/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 11 Oct 2019 07:31:50 +0000</pubDate>
				<category><![CDATA[Investment]]></category>
		<category><![CDATA[仮想通貨（暗号資産）]]></category>
		<guid isPermaLink="false">https://elite-lane.com/?p=6034</guid>

					<description><![CDATA[<p>【ビットコイン･仕組み】ビットコインアドレスの作り方 あなたの銀行口座から 家族間 友達同士 仕事の取引相手 等々 に銀行送金する場合、送金相手の口座番号が分からなければ、あなたは銀行送金する事が出来ません。 ビットコイ [&#8230;]</p>
<p>投稿 <a href="https://elite-lane.com/secret-key-public-key-bitcoin-address/">【ビットコイン･仕組み】ビットコインアドレスの作り方</a> は <a href="https://elite-lane.com">Archive of Yone</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<h1>【ビットコイン･仕組み】ビットコインアドレスの作り方</h1>
<p>あなたの銀行口座から</p>
<ul>
<li>家族間</li>
<li>友達同士</li>
<li>仕事の取引相手 等々</li>
</ul>
<p>に銀行送金する場合、送金相手の口座番号が分からなければ、あなたは銀行送金する事が出来ません。</p>
<p>ビットコイン取引の送受信も銀行送金と同様に、送受信先の「口座番号」が分からなければ、ビットコインの送受信は出来ません。</p>
<p>ビットコイン取引における、銀行の「口座番号」にあたるのは<span class="bold-red">ビットコインアドレス</span>になります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1.png"><img fetchpriority="high" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1.png" alt="秘密鍵・公開鍵・ビットコインアドレスの関係" width="752" height="502" class="aligncenter size-full wp-image-9826" srcset="https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1.png 752w, https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1-300x200.png 300w" sizes="(max-width: 752px) 100vw, 752px" /></a></p>
<p>この記事では、この<span class="bold-red">ビットコインアドレス</span>の作り方を図解で説明していきます。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"></li><li><a href="#toc1" tabindex="0">ビットコインアドレスの作り方</a><ol><li><a href="#toc2" tabindex="0">秘密鍵・公開鍵・ビットコインアドレスの生成手順</a><ol><li><a href="#toc3" tabindex="0">秘密鍵</a></li><li><a href="#toc4" tabindex="0">公開鍵</a></li><li><a href="#toc5" tabindex="0">ビットコインアドレス</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">ビットコインアドレスの作り方</span></h2>
<p><img decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/06/finance-3058329_640.jpg" alt="ビットコインアドレスの作り方" width="640" height="426" class="aligncenter size-full wp-image-9938" srcset="https://elite-lane.com/wp-content/uploads/2020/06/finance-3058329_640.jpg 640w, https://elite-lane.com/wp-content/uploads/2020/06/finance-3058329_640-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>ビットコイン取引を</p>
<ul>
<li>個人同士</li>
<li>取引所・販売所</li>
</ul>
<p>を通して行う場合、ウォレットという物が必要になります。</p>
<p>ウォレットに含まれている情報には</p>
<ul>
<li>秘密鍵</li>
<li>公開鍵</li>
<li><span class="bold-red">ビットコインアドレス</span></li>
</ul>
<p>があります。</p>
<p><!--
<font size="2">ウォレットに関する記事はこちら</font>


<a rel="follow noopener" target="_blank" href="https://elite-lane.com/crypto-asset-wallet/" title="ページが見つかりません。 - Archive of Yone" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://elite-lane.com/wp-content/uploads/2018/12/elitelane.jpeg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">ページが見つかりません。 - Archive of Yone</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com/404/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">elite-lane.com</div></div></div></div></a>
--></p>
<ul>
<li>公開鍵</li>
<li>秘密鍵</li>
</ul>
<p>は公開鍵暗号方式という暗号技術によって生成されたもので、</p>
<ul>
<li>公開鍵・・・暗号文を復号
<ul>
<li>秘密鍵でしか開錠出来ない錠みたいなもの</li>
<li>秘密鍵により複数作成可能</li>
</ul>
</li>
<li>秘密鍵・・・平文を暗号化
<ul>
<li>公開鍵を作成出来る鍵みたいなもの</li>
<li>公開鍵を開錠出来る唯一の手段</li>
</ul>
</li>
</ul>
<p>という特徴をそれぞれ持っています。</p>
<p>これら「鍵」は、暗号化・復号化する為の手段であり、インターネット上で、実際に物理的（有形）な「鍵」が存在するわけではありません。</p>
<p>実際の「鍵」の正体は、<span class="marker-under">「鍵」のような役割を果たす無形資産（データ）</span>です。</p>
<div class="information-box">
暗号化・・・第三者が通信文を見ても特別な知識なしでは読めないように変換するセキュア通信の手法</p>
<p>復号化・・・デジタルデータを特定の方法で、元の通信文・データに戻す変換を加えること</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-13-at-15.09.30.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-13-at-15.09.30.png" alt="暗号化・復号化" width="765" height="347" class="aligncenter size-full wp-image-5765" srcset="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-13-at-15.09.30.png 765w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-13-at-15.09.30-300x136.png 300w" sizes="(max-width: 765px) 100vw, 765px" /></a></p>
</div>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-30-at-10.02.57.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-30-at-10.02.57.png" alt="公開鍵暗号方式" width="980" height="364" class="aligncenter size-full wp-image-6037" srcset="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-30-at-10.02.57.png 980w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-30-at-10.02.57-300x111.png 300w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-30-at-10.02.57-768x285.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></a></p>
<p><font size="2">公開鍵暗号方式に関する記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/common-key-cryptography-and-public-key-cryptography/" title="【図解】共通鍵暗号方式と公開鍵暗号方式の仕組み･特徴" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/key-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/key-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/key-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/key-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/key-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【図解】共通鍵暗号方式と公開鍵暗号方式の仕組み･特徴</div><div class="blogcard-snippet internal-blogcard-snippet">【図解】共通鍵暗号方式と公開鍵暗号方式の仕組み･特徴 インターネットの世界では 色々な情報を瞬時に検索可能 実際に店舗に行かずにオンラインショッピングが可能 インターネットに繋がっている端末さえ保有していれば誰とでも通信可能 という大きなメ...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.09.15</div></div></div></div></a>
<p><span class="bold-red">ビットコインアドレス</span>は公開鍵から派生して生成されるモノであり、</p>
<ul>
<li>公開鍵</li>
<li>秘密鍵</li>
<li><span class="bold-red">ビットコインアドレス</span></li>
</ul>
<p>それぞれの役割を銀行取引に例えると、</p>
<ul>
<li>公開鍵・・・通帳</li>
<li>秘密鍵・・・暗証番号</li>
<li><span class="bold-red">ビットコインアドレス</span>・・・口座番号</li>
</ul>
<p>になります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1.png"><img fetchpriority="high" decoding="async" src="https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1.png" alt="秘密鍵・公開鍵・ビットコインアドレスの関係" width="752" height="502" class="aligncenter size-full wp-image-9826" srcset="https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1.png 752w, https://elite-lane.com/wp-content/uploads/2020/06/Screen-Shot-2020-06-04-at-19.08.28-min-1-300x200.png 300w" sizes="(max-width: 752px) 100vw, 752px" /></a></p>
<h3><span id="toc2">秘密鍵・公開鍵・ビットコインアドレスの生成手順</span></h3>
<p><span class="bold-red">ビットコインアドレス</span>を生成するまでの大まかな流れは、</p>
<ol>
<li>暗号的乱数器を利用し秘密鍵を生成</li>
<li>秘密鍵から楕円曲線暗号を利用して公開鍵を生成</li>
<li>公開鍵を二重ハッシュ化</li>
<li>最後に、Base58エンコードという仕組みを使用して<span class="bold-red">ビットコインアドレス</span>を生成</li>
</ol>
<p>となります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.23.31.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.23.31.png" alt="秘密鍵・公開鍵・ビットコインアドレス" width="1183" height="351" class="aligncenter size-full wp-image-6103" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.23.31.png 1183w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.23.31-300x89.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.23.31-768x228.png 768w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.23.31-1024x304.png 1024w" sizes="(max-width: 1183px) 100vw, 1183px" /></a></p>
<p>それでは、秘密鍵から<span class="bold-red">ビットコインアドレス</span>生成までの流れを見てみましょう。</p>
<h4><span id="toc3">秘密鍵</span></h4>
<p>ビットコイン取引における秘密鍵は、ブロックチェーンのトランザクション（取引）に取引者本人が暗号化（電子署名）する際に利用されます。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.45.14.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.45.14.png" alt="ブロックチェーン" width="1034" height="274" class="aligncenter size-full wp-image-6110" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.45.14.png 1034w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.45.14-300x79.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.45.14-768x204.png 768w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.45.14-1024x271.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" /></a></p>
<p>秘密鍵で暗号化した暗号文は、</p>
<ul>
<li>ペアとなる公開鍵でしか復号出来ない</li>
<li>公開鍵から秘密鍵を割り出すことは不可能</li>
</ul>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.14.43.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.14.43.png" alt="秘密鍵" width="521" height="226" class="aligncenter size-full wp-image-6107" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.14.43.png 521w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-20.14.43-300x130.png 300w" sizes="(max-width: 521px) 100vw, 521px" /></a></p>
<h5>秘密鍵の生成</h5>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.44.55.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.44.55.png" alt="秘密鍵の生成" width="635" height="258" class="aligncenter size-full wp-image-6102" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.44.55.png 635w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.44.55-300x122.png 300w" sizes="(max-width: 635px) 100vw, 635px" /></a></p>
<p>ビットコイン取引での秘密鍵の長さには厳格な制限はありません。</p>
<ul>
<li>512 ビット（64バイト）128 文字</li>
<li>128 ビット（16バイト）32文字</li>
<li>256 ビット（32バイト）64文字</li>
</ul>
<p>どの長さを選んでも構いませんが、最も一般的なビットコインの秘密鍵は、256ビット（64文字）になります。</p>
<p><font size="2">ビット・バイトに関する記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/bit-and-byte/" title="1バイトは何ビット？16進数から10進数・2進数に変換" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/digi-bi-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">1バイトは何ビット？16進数から10進数・2進数に変換</div><div class="blogcard-snippet internal-blogcard-snippet">1バイトは何ビット？16進数から10進数・2進数に変換 私たちが生活している世界では10進数が利用される事が多く、2進数にあまり馴染みがありません。 しかし、今や生活に欠かす事の出来ないコンピュータは2進数を利用しています。 人間の世界・・...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.02.09</div></div></div></div></a>
<p>256ビットの整数がどの位、大きな数字かと言うと、</p>
<ul>
<li>256ビット・・・2<sup>256</sup></li>
</ul>
<p>ですので、10進数では</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/1ae6ffa47f9b8ab97cfa848c9336904e.js"></script></p>
<p>78桁の非常に大きい数字になります。</p>
<p>このように非常に大きな数から、<span class="marker-under">一つの数字を秘密鍵とします。</span></p>
<p>つまり下記の様に、どの数字も秘密鍵になるのです。</p>
<ul>
<li>1</li>
<li>7</li>
<li>28</li>
<li>172</li>
<li>・・・</li>
<li>・・・</li>
<li>115792089237316195423570985008687907853269984665640564039457584007913129639936</li>
</ul>
<p>上記の秘密鍵は10進数ですが、実際のビットコインの秘密鍵は16進数です。</p>
<p>実際に、暗号学的乱数を利用して256ビット（64文字）の秘密鍵を生成します。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/0922b01372f9ec16ec0f520ed28f8d64.js"></script></p>
<h4><span id="toc4">公開鍵</span></h4>
<p>ビットコイン取引における公開鍵は、ブロックチェーンの中の秘密鍵を使って暗号化（電子署名）したトランザクション（取引情報）が本当に正しいのかを復号（検証）する際に使用されます。</p>
<h5>公開鍵の生成</h5>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.06.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.06.png" alt="公開鍵の生成" width="1027" height="341" class="aligncenter size-full wp-image-6101" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.06.png 1027w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.06-300x100.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.06-768x255.png 768w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.06-1024x340.png 1024w" sizes="(max-width: 1027px) 100vw, 1027px" /></a></p>
<p>ビットコイン取引における公開鍵は、、秘密鍵から計算される際に、Secp256k1という楕円曲線暗号を用いたデジタル署名アルゴリズムを使います。</p>
<div class="information-box">
アルゴリズムとは</p>
<ul>
<li>数学</li>
<li>コンピューティング</li>
<li>言語学</li>
<li>あるいは関連する分野</li>
</ul>
<p>において、問題を解くための手順を定式化した形で表現したものです。</p>
<p>このアルゴリズムの説明を見ると少し難しそうですが、アルゴリズムを分かりやすく説明する為に例を出します。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.45.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.45.png" alt="アルゴリズム" width="749" height="182" class="aligncenter size-full wp-image-5797" srcset="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.45.png 749w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.45-300x73.png 300w" sizes="(max-width: 749px) 100vw, 749px" /></a></p>
<p>上記の文字列は、僕が即席で作った暗号文です。</p>
<p>このままだと意味のある文章になっていません。</p>
<p>この文字列を平文にする為には、暗号文に書かれているアルファベットをアルファベット順で１つ前のアルファベットに置換します。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.44.43.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.44.43.png" alt="アルゴリズム" width="700" height="155" class="aligncenter size-full wp-image-5798" srcset="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.44.43.png 700w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.44.43-300x66.png 300w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<p>すると、理解出来る文章に変わりました。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.58.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.58.png" alt="アルゴリズム" width="687" height="184" class="aligncenter size-full wp-image-5796" srcset="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.58.png 687w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.48.58-300x80.png 300w" sizes="(max-width: 687px) 100vw, 687px" /></a></p>
<p>つまり、「アルファベット順で１つ前のアルファベットに置換する」という法則・規則（アルゴリズム）を利用して平文を暗号文に変換したのです。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.49.33.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.49.33.png" alt="アルゴリズム" width="716" height="469" class="aligncenter size-full wp-image-5795" srcset="https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.49.33.png 716w, https://elite-lane.com/wp-content/uploads/2019/09/Screen-Shot-2019-09-15-at-0.49.33-300x197.png 300w" sizes="(max-width: 716px) 100vw, 716px" /></a></p>
</div>
<h6>デジタル署名アルゴリズム</h6>
<p>デジタル署名アルゴリズム（Digital Signature Algorithm：DSA）とは、離散対数問題と呼ばれる数学上の問題を安全性の根拠とするデジタル署名方式の一つです。</p>
<p>離散対数問題とは、</p>
<ul>
<li>秘密鍵を使って暗号化（電子署名）</li>
<li>公開鍵を使って復号（検証）</li>
</ul>
<p>する公開鍵暗号方式の原理となる数学的性質のひとつです。</p>
<p>離散対数問題では、</p>
<ul>
<li>素数 p</li>
<li>定数 g</li>
</ul>
<p>が与えられたとき、y = g<sup>x</sup> mod pは</p>
<ul>
<li>xから計算することは容易</li>
<li>yからxを求めることは困難</li>
</ul>
<p>という問題です。</p>
<p>公開鍵暗号方式を離散対数問題に準えると、</p>
<ul>
<li>x（公開鍵）から計算することは容易</li>
<li>y（秘密鍵）からx（公開鍵）を求めることは困難</li>
</ul>
<p>となります。</p>
<div class="question-box">
素数とは、1と自分自身以外に正の約数を持たない自然数で、1でない数の事を指します。</p>
<p>例えば、</p>
<ul>
<li>2</li>
<li>3</li>
<li>5</li>
<li>7</li>
<li>・・・</li>
<li>・・・</li>
<li>3413</li>
<li>3571</li>
<li>・・・</li>
<li>・・・</li>
</ul>
<p>これらの数字は全て素数です。</p>
<p>modとは、moduloの略で、ある数値を別の数値で除算し、余りを取得する演算の事です。</p>
<p>modを掻い摘んで言うと、「割り算の余り」になります。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/e2f8e049aa9ed713de2ff62163a5fcdb.js"></script></p>
<p>整数aを整数bで割った余りがcであることを表します。 </p>
<p>例えば、</p>
<ul>
<li>7 を 3 で割った余りは 1<br />
7 mod 3 = 1</li>
<li>8 を 3 で割った余りは 2<br />
8 mod 3 = 2</li>
<li>9 を 3 で割った余りは 0<br />
9 mod 3 = 0</li>
</ul>
<p>余りは必ず、0 から b-1 の値のどれかになる性質があります。
</div>
<p>離散対数問題を実際に具体的な数字を代入して計算してみましょう。</p>
<p>y = g<sup>x</sup> mod p</p>
<p>1）以下の条件で、yの値を求めてみましょう。</p>
<ul>
<li>素数 p・・・5</li>
<li>定数 g・・・2</li>
<li>x・・・4</li>
</ul>
<p><script src="https://gist.github.com/atsushi-yonezawa/8b504a1e409d85c9582c0401caa312b5.js"></script></p>
<p>2 の 4乗は 16 です。<br />
16 ÷ 5 = 3 余り 1</p>
<p>yの値は、1です。</p>
<p>次に以下の条件で、xの値を求めてみましょう。</p>
<ul>
<li>素数 p・・・5</li>
<li>定数 g・・・2</li>
<li>y・・・1</li>
</ul>
<p><script src="https://gist.github.com/atsushi-yonezawa/1ea1c5e846583d787baab1dcdfe939ab.js"></script></p>
<p>数が小さいので、地道にxに1から順に代入して計算していけば、</p>
<ul>
<li>x = 1 の場合、y = 2</li>
<li>x = 2 の場合、y = 4</li>
<li>x = 3 の場合、y = 3</li>
<li>x = 4 の場合、y = 1</li>
</ul>
<p>xの値は、4 と意外と簡単に求められてしまいます。</p>
<p>2）以下の条件で、yの値を求めてみましょう。</p>
<ul>
<li>素数 p・・・17</li>
<li>定数 g・・・2</li>
<li>x・・・10</li>
</ul>
<p><script src="https://gist.github.com/atsushi-yonezawa/8f078f4c3d2b37ebdf2e74ea557c4f73.js"></script></p>
<p>2 の 10乗は 1,024です。<br />
1,024 ÷ 17 = 60 余り 4</p>
<p>yの値は、4 です。</p>
<p>次に以下の条件で、xの値を求めてみましょう。</p>
<ul>
<li>素数 p・・・17</li>
<li>定数 g・・・2</li>
<li>y・・・4</li>
</ul>
<p><script src="https://gist.github.com/atsushi-yonezawa/3044471bd46f4f5edc43529074117351.js"></script></p>
<p>xの値を求める為には、地道にxに数字を代入していくしかありません。</p>
<ul>
<li>x = 1 の場合、y = 2</li>
<li>x = 2 の場合、y = 4</li>
<li>x = 3 の場合、y = 8</li>
<li>x = 4 の場合、y = 16</li>
<li>x = 5 の場合、y = 15</li>
<li>x = 6 の場合、y = 13</li>
<li>x = 7 の場合、y = 9</li>
<li>x = 8 の場合、y = 1</li>
<li>x = 9 の場合、y = 2</li>
<li>x = 10 の場合、y = 4</li>
</ul>
<p>xの値は、10でした。</p>
<p>上記、</p>
<ul>
<li>1）</li>
<li>2 ）</li>
</ul>
<p>2つの例題は数字が小さいので、地道に計算する事でxの値は求める事が出来ました。</p>
<p>次は、少し数字の桁数を増やしてみます。</p>
<p>3）以下の条件で、yの値を求めてみましょう。</p>
<ul>
<li>素数 p・・・38501</li>
<li>定数 g・・・2</li>
<li>x・・・1024</li>
</ul>
<p><script src="https://gist.github.com/atsushi-yonezawa/fd97ecf26545ee70905ef1ff0df3fa44.js"></script></p>
<p>yを求めるのは、人間の力だと時間が掛かるので</p>
<ul>
<li>関数電卓</li>
<li>パソコン</li>
</ul>
<p>の機能を利用して求めてみます。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.17.51.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.17.51.png" alt="離散対数問題" width="498" height="87" class="aligncenter size-full wp-image-6134" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.17.51.png 498w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.17.51-300x52.png 300w" sizes="(max-width: 498px) 100vw, 498px" /></a></p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.18.07.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.18.07.png" alt="離散対数問題" width="491" height="86" class="aligncenter size-full wp-image-6135" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.18.07.png 491w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-09-at-11.18.07-300x53.png 300w" sizes="(max-width: 491px) 100vw, 491px" /></a></p>
<p>yの値は、7586でした。</p>
<p>次に以下の条件で、xの値を求めてみましょう。</p>
<ul>
<li>素数 p・・・38501</li>
<li>定数 g・・・2</li>
<li>y・・・7586</li>
</ul>
<p><script src="https://gist.github.com/atsushi-yonezawa/d552d459143c7d0b19cdfbd43f9c1b7d.js"></script></p>
<p>xの値を求める為の機能は、</p>
<ul>
<li>関数電卓</li>
<li>パソコン</li>
</ul>
<p>には備わっていない為、パソコンですらxを求める為には、地道にxに数字を代入して求めるしかありません。（総当たり）</p>
<ul>
<li>x = 1 の場合、y = 2</li>
<li>x = 2 の場合、y = 4</li>
<li>x = 3 の場合、y = 8</li>
<li>・・・</li>
<li>・・・</li>
<li>x = 1024 の場合、y = 7586</span></li>
</ul>
<p>xの値を求める為に、xに1から順に代入して x = 1,024の時に求める事が出来ました。</p>
<p>しかし、このxの値が四桁ではなく、</p>
<ul>
<li>10桁</li>
<li>30桁</li>
<li>50桁</li>
</ul>
<p>では、どうでしょうか。冷静沈着なコンピュータですら面倒臭くなって投げ出すかもしれません。（そんな事は有りません。答えが出るまで計算し続けます）</p>
<p>これが先程述べた</p>
<ul>
<li>素数 p</li>
<li>定数 g</li>
</ul>
<p>が与えられたとき、y = gx mod pを</p>
<ul>
<li>xから計算することは容易</li>
<li>yからxを求めることは困難</li>
</ul>
<p>である離散対数問題なのです。</p>
<h6>楕円曲線暗号</h6>
<p>楕円曲線暗号（Elliptic Curve Cryptography：ECC）とは、楕円曲線上の離散対数問題の困難性を安全性の根拠とする暗号です。</p>
<p>楕円曲線の一般式は、 y<sup>2</sup> = x<sup>3</sup>  + ax + b になります。</p>
<p>また、関数グラフで表すと下記の様になります。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg.png" alt="楕円曲線のグラフ" width="335" height="190" class="aligncenter size-full wp-image-6125" srcset="https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg.png 335w, https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg-300x170.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg-120x68.png 120w, https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg-160x90.png 160w, https://elite-lane.com/wp-content/uploads/2019/10/335px-ECClines-3.svg-320x180.png 320w" sizes="(max-width: 335px) 100vw, 335px" /></a></p>
<div align="right">
<font size="2"><br />
出典:<a rel="follow noopener" target="_blank" href="https://ja.wikipedia.org">wikipedia</a><br />
</font>
</div>
<div class="information-box">
参考までに、一次から四次関数のグラフを載せてみます。</p>
<p>・一次関数のグラフ・・・y = ax + b</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.29.57.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.29.57.png" alt="1次関数のグラフ" width="170" height="174" class="aligncenter size-full wp-image-6114" /></a></p>
<p>・二次関数のグラフ・・・y= a・x<sup>2</sup>  + b・x + c</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.29.39.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.29.39.png" alt="2次関数のグラフ" width="189" height="178" class="aligncenter size-full wp-image-6115" /></a></p>
<p>・三次関数のグラフ・・・y= a・x<sup>3</sup>  + b・x<sup>2</sup> + c・x + d</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.29.15.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.29.15.png" alt="3次関数のグラフ" width="190" height="149" class="aligncenter size-full wp-image-6116" /></a></p>
<p>・四次関数のグラフ・・・y= a・x<sup>4</sup>  + b・x<sup>3</sup> + c・x<sup>2</sup> + d・x + e</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.28.53.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.28.53.png" alt="4次関数のグラフ" width="189" height="189" class="aligncenter size-full wp-image-6117" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.28.53.png 189w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.28.53-150x150.png 150w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-21.28.53-100x100.png 100w" sizes="(max-width: 189px) 100vw, 189px" /></a></p>
</div>
<p>ビットコインでは、楕円曲線の一般式である y<sup>2</sup> = x<sup>3</sup>  + ax + b に</p>
<ul>
<li>a = 0</li>
<li>b = 7</li>
<li>mod p</li>
</ul>
<p>を代入した、Secp256k1という特殊な楕円曲線を使用しています。</p>
<div class="information-box">
Secp256k1の素数であるpには、2<sup>256</sup> – 2<sup>32</sup> – 2<sup>9</sup> – 2<sup>8</sup> – 2<sup>7</sup> – 2<sup>6</sup> – 2<sup>4</sup> – 1 が代入されます。
</div>
<p>つまり、楕円曲線暗号・Secp256k1の式は下記の通りになります。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/6e5985207b74c8fd4bcd477e5e9b59ab.js"></script></p>
<p>この式の楕円曲線上で離散対数問題を利用して、</p>
<ol>
<li>64文字（32バイト）の秘密鍵から</li>
<li>130文字（65バイト）のx（公開鍵）</li>
</ol>
<p>を実際に生成します。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/7eadba327902ebce74978f08efed1d26.js"></script></p>
<h4><span id="toc5">ビットコインアドレス</span></h4>
<p><span class="bold-red">ビットコインアドレス</span>とは、ビットコインを</p>
<ul>
<li>送信</li>
<li>受信</li>
</ul>
<p>する際の宛先として利用されるものです。</p>
<h5>ビットコインアドレスの生成</h5>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.22.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.22.png" alt="ビットコインアドレスの生成" width="1033" height="357" class="aligncenter size-full wp-image-6100" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.22.png 1033w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.22-300x104.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.22-768x265.png 768w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-07-at-14.45.22-1024x354.png 1024w" sizes="(max-width: 1033px) 100vw, 1033px" /></a></p>
<p>公開鍵から<span class="bold-red">ビットコインアドレス</span>を生成するまで</p>
<ol>
<li>SHA-256を利用したハッシュ化</li>
<li>RIPEMD-160を利用したハッシュ化</li>
<li>プレフィックスの付加</li>
<li>チェックサムを生成</li>
<li>Base58エンコードを通す</li>
</ol>
<p>という流れになります。</p>
<h6>SHA-256</h6>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.02.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.02.png" alt="SHA-256" width="571" height="350" class="aligncenter size-full wp-image-6156" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.02.png 571w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.02-300x184.png 300w" sizes="(max-width: 571px) 100vw, 571px" /></a></p>
<p>この工程では、</p>
<ul>
<li>130文字（65バイト）の公開鍵を</li>
<li>SHA-256を使って、64文字（32バイト）のハッシュ値</li>
</ul>
<p>に、変換します。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/730c4feb7b615e993439530006f983c4.js"></script></p>
<p>SHA-256とは、ハッシュ関数の1つです。</p>
<p>ハッシュ関数とは、任意長のビット列から規則性のない固定長のビット列を生成する関数の事です。</p>
<p>ハッシュ関数は、アルゴリズムによって</p>
<ul>
<li>MD5</li>
<li>SHA-256</li>
<li>SHA-512</li>
<li>RIPEMD-160 等々</li>
</ul>
<p>が、あります。</p>

<table id="tablepress-32" class="tablepress tablepress-id-32">
<thead>
<tr class="row-1 odd">
	<th class="column-1">アルゴリズム</th><th class="column-2">MD5</th><th class="column-3">SHA-256</th><th class="column-4">SHA-512</th><th class="column-5">RIPEMD-160</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">ビット長（bit）</td><td class="column-2">128</td><td class="column-3">256</td><td class="column-4">512</td><td class="column-5">160</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">バイト長（Byte）</td><td class="column-2">16</td><td class="column-3">32</td><td class="column-4">64</td><td class="column-5">20</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">ハッシュ値の長さ（桁）</td><td class="column-2">32</td><td class="column-3">64</td><td class="column-4">128</td><td class="column-5">40</td>
</tr>
</tbody>
</table>
<!-- #tablepress-32 from cache -->
<p><font size="2">SHA-256・ハッシュ関数に関する記事はこちら</font></p>

<a rel="follow noopener" target="_blank" href="https://elite-lane.com/hash-function/" title="ハッシュ関数とは？ハッシュ関数のアルゴリズムと種類" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://elite-lane.com/wp-content/uploads/2020/05/hash-min-160x90.jpeg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://elite-lane.com/wp-content/uploads/2020/05/hash-min-160x90.jpeg 160w, https://elite-lane.com/wp-content/uploads/2020/05/hash-min-120x68.jpeg 120w, https://elite-lane.com/wp-content/uploads/2020/05/hash-min-320x180.jpeg 320w, https://elite-lane.com/wp-content/uploads/2020/05/hash-min-376x212.jpeg 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ハッシュ関数とは？ハッシュ関数のアルゴリズムと種類</div><div class="blogcard-snippet internal-blogcard-snippet">ハッシュ関数とは？ハッシュ関数のアルゴリズムと種類 ブロックチェーン技術・仮想通貨の盛り上がりに乗じて、注目を浴びているハッシュ関数。 ハッシュ（hash）は英単語ですが、 ハッシュド・ポテト（hashed potato） ハッシュド・ビー...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elite-lane.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">elite-lane.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.04.08</div></div></div></div></a>
<h6>RIPEMD-160とプレフィックス</h6>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.31.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.31.png" alt="RIPEMD-160 + 0x00" width="680" height="388" class="aligncenter size-full wp-image-6157" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.31.png 680w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.31-300x171.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.31-120x68.png 120w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.04.31-160x90.png 160w" sizes="(max-width: 680px) 100vw, 680px" /></a></p>
<p>この工程では、先ず</p>
<ul>
<li>64文字（32バイト）のハッシュ値を</li>
<li>RIPEMD-160を使って、40文字（20バイト）のハッシュ値</li>
</ul>
<p>に変換します。</p>
<ul>
<li>前工程のSHA-256を利用したハッシュ化</li>
<li>この工程のRIPEMD-160を利用したハッシュ化</li>
</ul>
<p>これらの工程は、二重ハッシュ化と呼ばれています。</p>
<p>二重ハッシュ化により生成されたハッシュ値の先頭に、プレフィックス（Prefix：接頭辞）を加えます。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/8ae7344e446bf6517e8a0abc9d8d030f.js"></script></p>
<div class="information-box">
プレフィックスは<span class="bold-red">ビットコインアドレス</span>の識別子の役割を担います。</p>
<p>プレフィックスは、16進数で識別されています。<br />
例えば、</p>
<ul>
<li>0x00（メインネット）・・・価格の付いているビットコインの所有・送信が可能</li>
<li>0x6F（テストネット）・・・ビットコインの送信等の試行が可能</li>
</ul>
<p>等々、あります。</p>

<table id="tablepress-33" class="tablepress tablepress-id-33">
<thead>
<tr class="row-1 odd">
	<th class="column-1">Version prefix</th><th class="column-2">種類</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">0x00	</td><td class="column-2">公開鍵ハッシュ（P2PKH）</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">0x05	</td><td class="column-2">スクリプトハッシュ（P2SH）</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">0x80<br />
</td><td class="column-2">秘密鍵WIF形式</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">0x80</td><td class="column-2">秘密鍵圧縮WIF形式</td>
</tr>
<tr class="row-6 even">
	<td class="column-1">0x0142</td><td class="column-2">BIP38暗号化秘密鍵</td>
</tr>
<tr class="row-7 odd">
	<td class="column-1">0x0488B21E</td><td class="column-2">BIP32拡張公開鍵</td>
</tr>
</tbody>
</table>
<!-- #tablepress-33 from cache -->
</div>
<p><script src="https://gist.github.com/atsushi-yonezawa/8ae7344e446bf6517e8a0abc9d8d030f.js"></script></p>
<h6>チェックサム</h6>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.21.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.21.png" alt="SHA-256 × 2" width="508" height="373" class="aligncenter size-full wp-image-6158" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.21.png 508w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.21-300x220.png 300w" sizes="(max-width: 508px) 100vw, 508px" /></a></p>
<p>この工程では、前工程で生成された、</p>
<ul>
<li>プレフィックス</li>
<li>RIPEMD-160・ハッシュ関数を利用して生成されたペイロード（データ）</li>
</ul>
<p>これらを組み合わせた文字列に、SHA-256のハッシュ関数を二回利用して、チェックサムを生成します。</p>
<div class="information-box">
チェックサム・・・最終的にビットコインアドレスが正しい形式かどうか検証するための認証コードのようなもの。
</div>
<p>先ず、SHA-256のハッシュ関数を二回利用して、ハッシュ値を生成</p>
<ul>
<li>42文字（21バイト）のハッシュ値を</li>
<li>SHA-256を使って、64文字（32バイト）のハッシュ値に変換</li>
<li>再度、SHA-256を使って、64文字（32バイト）のハッシュ値</li>
</ul>
<p>に変換します。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/7c03a2620f9f94e61300affa69006611.js"></script></p>
<p>生成されたハッシュ値の先頭4バイト（8文字）をチェックサムとして抽出します。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.45.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.45.png" alt="チェックサム" width="753" height="147" class="aligncenter size-full wp-image-6159" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.45.png 753w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.45-300x59.png 300w" sizes="(max-width: 753px) 100vw, 753px" /></a></p>
<p>抽出したチェックサムを</p>
<ul>
<li>プレフィックス</li>
<li>ペイロード（データ）</li>
</ul>
<p>の後尾に付加します。</p>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.55.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.55.png" alt="チェックサム" width="772" height="92" class="aligncenter size-full wp-image-6160" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.55.png 772w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.55-300x36.png 300w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.05.55-768x92.png 768w" sizes="(max-width: 772px) 100vw, 772px" /></a></p>
<p><script src="https://gist.github.com/atsushi-yonezawa/e88625e040000fb9475523e400df80f9.js"></script></p>
<h6>Base58エンコード</h6>
<p><a rel="follow noopener" target="_blank" href="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.06.27.png"><img loading="lazy" decoding="async" src="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.06.27.png" alt="Base58エンコード" width="751" height="495" class="aligncenter size-full wp-image-6161" srcset="https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.06.27.png 751w, https://elite-lane.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-10-at-15.06.27-300x198.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></a></p>
<p>これが最後の工程となり、</p>
<ul>
<li>プレフィックス</li>
<li>ペイロード（データ）</li>
<li>チェックサム</li>
</ul>
<p>これらが一つになった文字列にBase58エンコードを通して<span class="bold-red">ビットコインアドレス</span>を生成します。</p>
<p><script src="https://gist.github.com/atsushi-yonezawa/11bed0f13ab4fee3d46bed3d317f6011.js"></script></p>
<p>Base58エンコードとは可読性や送信アドレスの間違いを防止する機能を持った、ビットコインの為に開発されたエンコード形式になります。</p>
<p>Base58エンコードには、</p>
<ul>
<li>0 ~ 9</li>
<li>a ~ z</li>
<li>A ~ Z</li>
</ul>
<p>これら62種類の文字列から</p>
<ul>
<li>0（ゼロ）</li>
<li>O（大文字のオー）</li>
<li>l（小文字のエル）</li>
<li>I（大文字のアイ）</li>
</ul>
<p>を除いた58種類の文字と数字を使います。</p>
<p>Base58エンコードを利用後のプレフィックスは以下の様になります。</p>

<table id="tablepress-34" class="tablepress tablepress-id-34">
<thead>
<tr class="row-1 odd">
	<th class="column-1">Version prefix</th><th class="column-2">Base58変換後のprefix</th>
</tr>
</thead>
<tbody class="row-hover">
<tr class="row-2 even">
	<td class="column-1">0x00	</td><td class="column-2">1</td>
</tr>
<tr class="row-3 odd">
	<td class="column-1">0x05	</td><td class="column-2">3</td>
</tr>
<tr class="row-4 even">
	<td class="column-1">0x80<br />
</td><td class="column-2">5</td>
</tr>
<tr class="row-5 odd">
	<td class="column-1">0x80</td><td class="column-2">K or L</td>
</tr>
<tr class="row-6 even">
	<td class="column-1">0x0142</td><td class="column-2">6P</td>
</tr>
<tr class="row-7 odd">
	<td class="column-1">0x0488B21E</td><td class="column-2">Xpub</td>
</tr>
</tbody>
</table>
<!-- #tablepress-34 from cache -->
<p>以上、<span class="bold-red">ビットコインアドレス</span>の作り方についての説明になります。</p>
<p>投稿 <a href="https://elite-lane.com/secret-key-public-key-bitcoin-address/">【ビットコイン･仕組み】ビットコインアドレスの作り方</a> は <a href="https://elite-lane.com">Archive of Yone</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://elite-lane.com/secret-key-public-key-bitcoin-address/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
