การเข้ารหัสข้อมูลแบบอสมมาตร (Asymmetric key)

6 Sep 2015,
Share: 

อัลกอริทึมนี้จะใช้กุญแจสองตัวเพื่อทำงาน ตัวหนึ่งใช้ในการเข้ารหัสและอีกตัวหนึ่งใช้ในการถอดรหัสข้อมูลที่เข้ารหัสมา โดยกุญแจตัวแรก คือ กุญแจสาธารณะ (Public keys) ซึ่งจะเป็นกุญแจที่ใช้ในการเข้ารหัสข้อมูล กุญแจตัวที่สองคือ กุญแจส่วนตัว (Private keys) ซึ่งจะเป็นกุญแจที่ใช้ในการถอดรหัส อ่านๆไปแล้วอาจจะงงว่าจะเอาไปใช้ได้อย่างไร เรามาดูการทํางานกันดีกว่า

สมมุติว่ามี นายA และนายB ต้องการจะส่งข้อมูลถึงกัน นายA และนายB ต่างก็มี กุญแจคลละสองอัน(Public keys, Private keys)

นายA ก็บอกนายB ว่า ถ้าคุณต้องการส่งข้อความหาฉัน ให้คุณเข้ารหัสด้วย Public keys ของฉัน และนายB ก็บอกนายA เช่นเดียวกัน

ณ.เวลานี้ นายA และนายB ก็มี Public keys ของกันและกัน(นายA มี Public keys ของนายB, นายB มี Public keys ของนายA)

นายA อยากส่งข้อมูล ไปให้นายB นายA ก็จะต้อง เข้ารหัสข้อมูลด้วย Public keys ของนายB(จะส่งข้อมูลหาใครก็ต้องเข้ารหัสด้วย Public keys ของคนนั้น)

เมื่อนายB ได้รับข้อมูลมา นายB ก็ต้องถอดรหัสด้วย Private keys ของตนเอง ก็จะได้ข้อมูลที่นายA ส่งให้

สรุปคือ

  • Public keys ใช้สําหรับให้คนที่จะส่งข้อมูลถึงเรา เข้ารหัสข้อมูลก่อนส่งถึงเรา
  • Private keys ใช้สําหรับถอดรหัสข้อมูลที่เราได้รับมา

Image

Asymmetric-key

การเขียนโปรแกรม เข้ารหัส-ถอดรหัส แบบอสมมาตร (อย่างง่าย)

ตัวอย่างนี้จะเขียนด้วย javascript นะครับ โดยจะแสดงให้เห็นการเข้ารหัสเลข 6 ด้วย public key แล้ว ถอดรหัสด้วย private key

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>Eample</title>
 <script>
 //สมุติว่าเรามีข้อมูล ที่เป็นไปได้คือ 0-9
 //และข้อมูลที่เราต้องการจะเข้ารหัสคือ 6
 var number = 6;

 //Key ของนายA
 var publicKey_A = 8;
 var PrivateKey_A = 2;

 //Key ของนายB
 var publicKey_B = 4;
 var PrivateKey_B = 6;

 //เข้ารหัสด้วย public key ของA
 var encode_A = (number+publicKey_A)%10;
 //ถอดรหัสด้วย Private key ของA
 var decode_A = (encode_A+PrivateKey_A)%10;

 //เข้ารหัสด้วย public key ของB
 var encode_B = (number+publicKey_B)%10;
 //ถอดรหัสด้วย Private key ของB
 var decode_B = (encode_B+PrivateKey_B)%10;


 document.write( "เข้ารหัสเลข 6 ด้วย public key ของA ได้: " + encode_A + " <---ข้อมูลที่ถูกเข้ารหัสแล้ว<br>");
 document.write( "ถอดรหัสเลข 4 ด้วย Private key ของA ได้: " + decode_A + "<---ข้อมูลจริง<br><br>" );

 document.write( "เข้ารหัสเลข 6 ด้วย public key ของB ได้: " + encode_B + "<---ข้อมูลที่ถูกเข้ารหัสแล้ว<br>");
 document.write( "ถอดรหัสเลข 0 ด้วย Private key ของB ได้: " + decode_B + "<---ข้อมูลจริง<br>" );

 </script>
 </head>
 <body>

 </body>
</html>

ข้อมูลจาก www.msit.mut.ac.th

Suggestion blogs

ทําความรู้จักกับ Neo Pixel WS2812B

Neo Pixel WS2812B  คืออะไร?Neo Pixel WS2812B คือ หลอด LED ที่มีรูปร่างเป็นสี่เหลี่ยมแบนๆ ภายในจะประกอบไปด้วย Chip เบอร์ WS2812B และ LED ขนาดเล็กๆ 3 สี คือ RGB (Red, Green, Blue) โดยที่ Chip WS2812B จะทําหน้าที่ควบคุมการผสมสีของ LED RGB ให้เป็นสีต่างๆได้ถึง 16 ล้านสี หน้าตาจะประมาณรูปด้านล่าง

เหรียญ 1 บาท พระราชพิธีสถาปนาสมเด็จพระเจ้าลูกยาเธอเจ้าฟ้าวชิราลงกรณ ขึ้นทรงดำรงตำแหน่งสมเด็จพระบรมโอรสาธิราชเจ้าฟ้ามหาวชิราลงกรณ สยามมกุฎราชกุมาร

พระราชพิธีสถาปนาสมเด็จพระเจ้าลูกยาเธอเจ้าฟ้าวชิราลงกรณ ขึ้นทรงดำรงตำแหน่งสมเด็จพระบรมโอรสาธิราชเจ้าฟ้ามหาวชิราลงกรณ สยามมกุฎราชกุมาร พ.ศ.2515ข้อมูลผลิตเป็นที่ระลึกเนื่องในพระราชพิธีสถาปนาสมเด็จพระเจ้าลูกยาเธอเจ้าฟ้าวชิราลงกรณ ขึ้นทรงดำรงตำแหน่งสมเด็จพระบรมโอรสาธิราชเจ้าฟ้ามหาวชิราลงกรณ สยามมกุฎราชกุมาร เมื่อวันที่ 28 ธันวาคม พ.ศ. 2515

Git คืออะไร

สวัสดีครับ Git เป็น Version Control ที่พัฒนาขึ้นมาเพื่อใช้เป็นเครื่องมือช่วยในการพัฒนา Software ซึ่งจะช่วยติดตาม ตรวจสอบการแก้ไข Source Code และ file ต่างๆ โดยสามารถตรวจสอบได้ทุกตัวอักษร ทุกบรรทัด และทุกไฟล์ ว่าใครเป็นคนแก้ไข แก้ไขอะไรไป แก้ไขวันที่ และเวลาเท่าไร นอกจากนี้ยังสามารถย้อนไปยังการแก้ไข ณ. จุดใดจุดหนึ่งได้อีกด้วย ยังไม่หมดแค่นี้ Git ยังสามารถรวมการแก้ไขจากหลายๆคนเข้าด้วยกันได้อีกด้วย (Merge)


Copyright © 2019 - 2025 thiti.dev |  v1.58.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Nostr   Youtube channel   Telegram   Email contact   วงแหวนเว็บ