<?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>How to Config &#187; PKI</title>
	<atom:link href="http://www.howtoconfig.com/tag/pki/feed" rel="self" type="application/rss+xml" />
	<link>http://www.howtoconfig.com</link>
	<description>how to config - how to configure</description>
	<lastBuildDate>Fri, 29 Apr 2011 09:52:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>PHP &#8211; 2 Way Encrypt by PKI</title>
		<link>http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html</link>
		<comments>http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 15:31:14 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[PKI]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=61</guid>
		<description><![CDATA[ช่วงนี้ขยันครับกะจะปั่นบาความใหม่ๆสะหน่อย หลังจากไม่ได้เขียนมาสะนาน  วันนี้เอาเรื่องเกี่ยวกับ Developer บ้างผมเองเป็นทั้ง System,  Programing   เลยยกเรื่องการเ้ข้ารหัสข้อมูลที่เป็นแบบ  2 way คือสามารถ เข้ารหัส และถอดกลับมาได้  และมีความปลอดภัยสูง มาพูดเรื่อง PKI ก่อนนะครับ   ส่วนตัวผมเองไม่ได้เรื่อง IT มาเรื่อง PKI  ผมเองก็ได้แต่อ่านๆจากในเน็ต แล้วก็นำมาเล่าสู่กันฟัง    ท่าสามารถหาข้อมูลที่ลึงมากกว่านี้ได้จาก Link ข้างล่าง    &#8220;Public key infrastructure&#8221;  คือการเข้ารหัสข้อมูล โดยใช้  กุญแจ 2 ลูกคือ   Public Key และ Private Key       หากเราเข้ารหัสข้อมูลโดยใช้  Private Key     เราก็ต้องถอดรหัสโดยใช้  Public Key     ในทางกลับกัน ถ้าเข้ารหัสด้วย Public Key ก็ต้องใช้ Private Key ถอดรหัสเท่านั้น ทีนี้มาพูดถึงความปลอดภัย   ตัว [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้ขยันครับกะจะปั่นบาความใหม่ๆสะหน่อย หลังจากไม่ได้เขียนมาสะนาน  วันนี้เอาเรื่องเกี่ยวกับ Developer บ้างผมเองเป็นทั้ง System,  Programing   เลยยกเรื่องการเ้ข้ารหัสข้อมูลที่เป็นแบบ  2 way คือสามารถ เข้ารหัส และถอดกลับมาได้  และมีความปลอดภัยสูง</p>
<p><img class="alignleft size-medium wp-image-62" title="PKI " src="http://www.howtoconfig.com/content/uploads/2009/01/pki-300x181.png" alt="PKI " width="300" height="181" /> มาพูดเรื่อง PKI ก่อนนะครับ   ส่วนตัวผมเองไม่ได้เรื่อง IT มาเรื่อง PKI  ผมเองก็ได้แต่อ่านๆจากในเน็ต แล้วก็นำมาเล่าสู่กันฟัง    ท่าสามารถหาข้อมูลที่ลึงมากกว่านี้ได้จาก Link ข้างล่าง    &#8220;Public key infrastructure&#8221;  คือการเข้ารหัสข้อมูล โดยใช้  กุญแจ 2 ลูกคือ   Public Key และ Private Key       หากเราเข้ารหัสข้อมูลโดยใช้  Private Key     เราก็ต้องถอดรหัสโดยใช้  Public Key     ในทางกลับกัน ถ้าเข้ารหัสด้วย Public Key ก็ต้องใช้ Private Key ถอดรหัสเท่านั้น</p>
<p>ทีนี้มาพูดถึงความปลอดภัย   ตัว PKI เองสามารถเลือก bit การเข้ารหัสได้ตามที่เราต้องการ ตั้งแต่ 512, 1024, 2048  และสามารถเข้ารหัวได้สูงกว่านี้   ทำให้เป็นการยากที่จะถอดรหัสได้    ทุกๆวันนี้เราเองก็ใช้เทคโนโลยีนี้แทบทุกวัน โดยที่เราไม่รู้ตัว  อย่างบัตร SmartCard เองก็ใช้ PKI ในการเข้ารหัส หรือ Card UBC  เองก็ใช้เช่นกัน    อีกตัวอย่างคือ   เวลาเข้าเว็บไซด์ผ่าน https   ระหว่าง Web Server และ Browser ก็จะมีการเข้ารหัสข้อมูล โดยใช้เทคโนโลยี PKI    ในการเข้ารหัสเช่นกัน</p>
<p><span id="more-61"></span></p>
<p>ทีนี้มาพูดถึงแนวทางเอาไปใช้งานกับ PHP     ในการณี้ทีเรามีข้อมูลที่เราต้องการเข้ารหัส  และต้องสามารถถอดรหัสกลับมาได้ด้วย  เราสามารถเอา PKI เข้ามาแก้ไขปัญหาดั่งกล่าวได้    โดยการสร้าง Private Key และ Publick Key  ในการถอดรหัส   แต่มีข้อแม้ว่า Key ดั่งกล่าวต้องไม่หาย   ถ้าหาย ก็บอกลา Data ที่คุณเข้ารหัสไว้ได้เลย</p>
<p>ตัวอย่าง ผมมีข้อมูลที่ต้องส่งผ่านหน้า Web โดยการ Redirect ผ่าน URL  ไปยังอีกเว็บหนึ่ง โดยที่ผมไม่ต้องการให้ใครสามารถเปิดข้อมูลได้  ผมจะทำการ  Encryt ข้อมูลโดยใช้ Public Key ของเว็บตรงข้าม และ เว็บตรงข้ามต้องใช้ Private Key  เท่านั้นในการ Decrypt ข้อมูล</p>
<p>1.  สร้าง Private Key และ Pubkic Key  ผ่่าน Command Line</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl genrsa <span style="color: #660033;">-out</span> private.key <span style="color: #000000;">2048</span>
openssl rsa -pubout  <span style="color: #000000; font-weight: bold;">&amp;</span>lt; private.key  <span style="color: #000000; font-weight: bold;">&amp;</span>gt; public.key</pre></div></div>

<p>2.  ทำการสร้าง Code PHP  Function</p>
<pre>&lt;?php
function EncryptData($source)
{
	$fp=fopen( "public.key","r");
	$pub_key=fread($fp,8192);
	fclose($fp);
	openssl_get_publickey($pub_key);
	openssl_public_encrypt($source,$crypttext,$pub_key);
	return(base64_encode($crypttext));
}

function DecryptData($source)
{
	$fp=fopen( "private.key","r");
	$priv_key=fread($fp,8192);
	fclose($fp);
	$res = openssl_get_privatekey($priv_key);
	$decoded_source = base64_decode($source);
	openssl_private_decrypt($decoded_source,$newsource,$res);
	return($newsource);
}
?&gt;</pre>
<p>การนำไปใช้งาน  ท่านสามารถเอา  ใช้ PHP เรียก Function  ดั่งกล่าว เพื่อ Encrypt และ Decrypt ได้เลยครับ</p>
<p>Refer:</p>
<p>http://en.wikipedia.org/wiki/Public_key_infrastructure</p>
<p>http://thaicert.nectec.or.th/paper/encryption/sshl.php</p>
<p>http://www.google.co.th/search?hl=th&#038;q=Public+key+infrastructure&#038;btnG=%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2&#038;meta=cr%3DcountryTH</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.howtoconfig.com%2Fdevelopment%2Fphp-2way-encrypt-pki-openssl.html&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

