รหัสแอฟไฟน์
เข้ารหัสและถอดรหัสแอฟไฟน์ด้วยสูตร E(x) = (a·x + b) mod 26 ปรับตัวคูณ a และตัวเลื่อน b ทีละค่า ดูตารางตัวอักษรแทนที่และสูตรสดอัปเดต แล้วคัดลอก ดาวน์โหลด หรือแชร์ผลลัพธ์ ทุกอย่างทำงานเป็นส่วนตัวในเบราว์เซอร์ของคุณ
ตัวคูณ a
ตัวเลื่อน b
E(x) = (5x + 8) mod 26
ตัวคูณ a ต้องเป็นจำนวนเฉพาะสัมพัทธ์กับ 26 จึงมีเพียงสิบสองค่าที่อนุญาต ได้แก่ 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, และ 25 ส่วนตัวเลื่อน b เป็นจำนวนใดก็ได้ตั้งแต่ 0 ถึง 25
ป้อนข้อความด้านบนเพื่อดูผลลัพธ์ที่นี่
ตัวอักษรแทนที่
ธรรมดา
เข้ารหัส
วิธีใช้ รหัสแอฟไฟน์
- 1
เลือกเข้ารหัสหรือถอดรหัส
เลือกเข้ารหัสเพื่อเปลี่ยนข้อความธรรมดาเป็นข้อความเข้ารหัสแอฟไฟน์ หรือเลือกถอดรหัสเพื่อเปลี่ยนข้อความเข้ารหัสกลับเป็นข้อความที่อ่านได้โดยใช้กุญแจสองตัวเดียวกัน
- 2
ตั้งค่าตัวคูณ a
ไล่ตัวคูณ a ผ่านสิบสองค่าที่ใช้ได้ มีเฉพาะจำนวนที่เป็นจำนวนเฉพาะสัมพัทธ์กับ 26 เท่านั้นที่ให้เลือก ดังนั้นรหัสจึงย้อนกลับได้เสมอ
- 3
ตั้งค่าตัวเลื่อน b
ไล่ตัวเลื่อน b ไปยังค่าใดก็ได้ตั้งแต่ 0 ถึง 25 สูตรสดและตารางตัวอักษรแทนที่จะอัปเดตทันทีที่คุณเปลี่ยนมัน
- 4
พิมพ์หรือวางข้อความของคุณ
ป้อนข้อความของคุณ แล้วรหัสจะทำงานขณะที่คุณพิมพ์ ตัวอักษรจะถูกเข้ารหัส ขณะที่ช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนจะผ่านไปโดยไม่เปลี่ยนแปลง และตัวพิมพ์ใหญ่เล็กถูกรักษาไว้
- 5
คัดลอก ดาวน์โหลด หรือแชร์
คัดลอกผลลัพธ์ ดาวน์โหลดเป็นไฟล์ข้อความ หรือแชร์ลิงก์ที่จะเปิดเครื่องมือขึ้นมาใหม่พร้อมกุญแจ ข้อความ และทิศทางที่แน่นอนของคุณพร้อมใช้งานทันที
ทำความเข้าใจรหัสแอฟไฟน์
รหัสแอฟไฟน์คืออะไร
รหัสแอฟไฟน์เป็นรหัสแทนที่แบบตัวอักษรเดียวที่สร้างขึ้นจากเลขคณิตมอดุลาร์อย่างง่าย ตัวอักษรแต่ละตัวจะถูกเปลี่ยนเป็นตัวเลข โดย A = 0 ไปจนถึง Z = 25 ผ่านฟังก์ชันเชิงเส้น E(x) = (a·x + b) mod 26 แล้วเปลี่ยนกลับเป็นตัวอักษร ตัวเลขสองตัวคือ a และ b เป็นกุญแจ โดย a คือตัวคูณและ b คือตัวเลื่อน เพราะตัวอักษรเดียวกันแม็ปไปยังตัวอักษรเข้ารหัสตัวเดียวกันเสมอ รหัสแอฟไฟน์จึงอยู่ในตระกูลเดียวกับรหัสซีซาร์และแอตแบช แต่ขั้นตอน คูณ-แล้ว-เลื่อน ทำให้มันทั่วไปกว่าทั้งสองรหัสนั้น
ชื่อของมันมาจากฟังก์ชันแอฟไฟน์ a·x + b ซึ่งเป็นการรวมกันของการคูณและการบวกที่ให้โครงสร้างแก่รหัสนี้ มันเป็นหนึ่งในรหัสที่นิยมที่สุดสำหรับการสอนคณิตศาสตร์เบื้องหลังการเข้ารหัสลับ เพราะมันแสดงให้เห็นว่าเลขคณิตมอดุลาร์ จำนวนเฉพาะสัมพัทธ์ และตัวผกผันมอดุลาร์มารวมกันเป็นรหัสที่ใช้งานได้จริงอย่างไร อีกทั้งยังเป็นแขกประจำในปริศนา ห้องหนีภัย และการแข่งขันแคปเจอร์เดอะแฟล็ก ที่ซึ่งปริภูมิกุญแจขนาดเล็กของมันทำให้การเจาะด้วยมือเป็นเรื่องน่าพอใจ
สูตรการเข้ารหัสแอฟไฟน์
ในการเข้ารหัส ตัวอักษรทุกตัวจะถูกแปลงเป็นตำแหน่งของมันในลำดับอักษร โดย A = 0, B = 1 และเรื่อยไปจนถึง Z = 25 ตัวเลข x นั้นจะถูกป้อนเข้าสู่สูตร E(x) = (a·x + b) mod 26 คือคูณด้วย a บวกด้วย b แล้วหาเศษหลังหารด้วย 26 เพื่อให้ผลลัพธ์วนกลับเข้าสู่ช่วง 0 ถึง 25 การแปลงตัวเลขนั้นกลับเป็นตัวอักษรจะได้ข้อความเข้ารหัส การคูณด้วย a ยืดและสับเปลี่ยนลำดับอักษร ขณะที่การบวกด้วย b เลื่อนมันไปตามแนว และ mod 26 ทำให้ทุกอย่างอยู่ภายในวงแหวน 26 ตัวอักษร
เครื่องมือด้านบนแสดงการแม็ปทั้งหมดได้ในพริบตา ตารางตัวอักษรแทนที่แสดงตัวอักษรธรรมดาทุกตัวตั้งแต่ A–Z พร้อมตัวอักษรเข้ารหัสที่มันกลายเป็นภายใต้ค่า a และ b ปัจจุบันของคุณ และมันจะอัปเดตทันทีที่คุณเปลี่ยนกุญแจตัวใดตัวหนึ่ง ตัวพิมพ์ใหญ่เล็กถูกรักษาไว้ และสิ่งใดก็ตามที่ไม่ใช่ตัวอักษร เช่น ช่องว่าง ตัวเลข เครื่องหมายวรรคตอน อีโมจิ จะผ่านไปโดยไม่ถูกแตะต้อง ดังนั้นรูปร่างของข้อความของคุณจึงยังคงอ่านได้แม้หลังจากถูกเข้ารหัสแล้ว
การเลือกกุญแจ a และ b
ตัวเลื่อน b นั้นง่าย มันเป็นจำนวนเต็มใดก็ได้ตั้งแต่ 0 ถึง 25 ส่วนตัวคูณ a เป็นตัวที่น่าสนใจ เพราะไม่ใช่ทุกค่าที่ใช้ได้ เพื่อให้รหัสย้อนกลับได้ a ต้องเป็นจำนวนเฉพาะสัมพัทธ์กับ 26 หมายความว่ามันไม่มีตัวประกอบร่วมกับ 26 อื่นใดนอกจาก 1 เนื่องจาก 26 = 2 × 13 จำนวนคู่ใด ๆ และจำนวนที่เป็นพหุคูณของ 13 จึงถูกตัดออก ซึ่งเหลือค่าที่ใช้ได้พอดีสิบสองค่า ได้แก่ 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, และ 25
หาก a มีตัวประกอบร่วมกับ 26 เช่น a = 2 ตัวอักษรธรรมดาหลายตัวที่ต่างกันจะชนกันที่ตัวอักษรเข้ารหัสตัวเดียวกัน และข้อความจะไม่อาจถอดรหัสได้อย่างไม่ซ้ำกันอีกต่อไป นี่จึงเป็นเหตุที่ตัวควบคุมตัวคูณด้านบนไล่เฉพาะสิบสองค่าที่ใช้ได้ มันเป็นไปไม่ได้ที่จะเลือกกุญแจที่ย้อนกลับไม่ได้ ด้วยสิบสองตัวเลือกสำหรับ a และยี่สิบหกตัวเลือกสำหรับ b จึงมีการผสมกุญแจที่เป็นไปได้ทั้งหมด 312 แบบ ซึ่งหนึ่งในนั้นคือ a = 1 และ b = 0 ทิ้งข้อความไว้โดยไม่เปลี่ยนแปลง
ตัวอย่างแอฟไฟน์ประกอบ
ลองนำกุญแจ a = 5 และ b = 8 มาเข้ารหัสคำว่า AFFINECIPHER ตัวอักษรตัวแรก A คือ 0 ดังนั้น E(0) = (5·0 + 8) mod 26 = 8 ซึ่งคือ I ตัวอักษรถัดไป F คือ 5 ดังนั้น E(5) = (5·5 + 8) mod 26 = 33 mod 26 = 7 ซึ่งคือ H การไล่ทำทีละตัวไปตลอดทั้งคำให้ผลเป็นข้อความเข้ารหัส IHHWVCSWFRCP
คุณติดตามทุกขั้นตอนได้บนตารางตัวอักษรแทนที่ด้านบน ตั้งค่า a เป็น 5 และ b เป็น 8 แล้วแถวเข้ารหัสจะแสดง A กลายเป็น I, B กลายเป็น N, C กลายเป็น S และเรื่อยไปตลอดลำดับอักษร เพราะการแม็ปนั้นตายตัว การเข้ารหัสตัวอักษรเดียวกันจึงให้ผลเหมือนเดิมเสมอ ตัว F ทั้งสองตัวใน AFFINE กลายเป็น H ซึ่งเป็นคุณสมบัติที่ทำให้ผู้โจมตีใช้การวิเคราะห์ความถี่กับมันได้พอดี
การถอดรหัสแอฟไฟน์
การถอดรหัสรันสูตรย้อนกลับด้วย D(y) = a⁻¹·(y − b) mod 26 ส่วนประกอบใหม่คือ a⁻¹ ซึ่งคือตัวผกผันมอดุลาร์ของ a นั่นคือจำนวนที่เมื่อคูณด้วย a แล้วได้ 1 mod 26 สำหรับ a = 5 ตัวผกผันคือ 21 เพราะ 5 × 21 = 105 = 4 × 26 + 1 ในการถอดรหัส คุณลบตัวเลื่อน b คูณด้วยตัวผกผันนั้น แล้วหาผลลัพธ์ mod 26 เมื่อย้อนตัวอย่างกลับ ตัวอักษรเข้ารหัส I คือ 8 และ D(8) = 21·(8 − 8) mod 26 = 0 ซึ่งคือ A อีกครั้ง
คุณไม่จำเป็นต้องคำนวณตัวผกผันด้วยตัวเองเลย เลือกถอดรหัสด้านบน ป้อนค่า a และ b เดียวกันกับที่ใช้เข้ารหัส แล้ววางข้อความเข้ารหัส เครื่องมือจะหาตัวผกผันมอดุลาร์และกู้ข้อความคืนได้ทันที เพราะรหัสแอฟไฟน์เป็นการแม็ปแบบหนึ่งต่อหนึ่งที่สะอาด การถอดรหัสจึงคืนข้อความต้นฉบับของคุณอย่างเที่ยงตรง พร้อมช่องว่าง ตัวพิมพ์ใหญ่ และเครื่องหมายวรรคตอนทั้งหมดคงอยู่ครบถ้วน
ซีซาร์และแอตแบชในฐานะกรณีพิเศษ
รหัสแอฟไฟน์บรรจุรหัสคลาสสิกที่โด่งดังที่สุดสองรหัสไว้อย่างเงียบ ๆ ตั้งตัวคูณ a เป็น 1 แล้วสูตรจะยุบลงเหลือ E(x) = (x + b) mod 26 ซึ่งก็คือรหัสซีซาร์พอดี นั่นคือการเลื่อนตัวอักษรทุกตัวไป b ตำแหน่งล้วน ๆ ด้วย a = 1 และ b = 3 คุณจะได้การเลื่อนแบบคลาสสิกที่ว่ากันว่าจูเลียส ซีซาร์ใช้ ซึ่งเปลี่ยน A into D และ HELLO เป็น KHOOR
ตั้ง a = 25 และ b = 25 แล้วบางสิ่งที่คุ้นเคยพอ ๆ กันจะปรากฏขึ้น เนื่องจาก 25 เท่ากับ −1 mod 26 สูตรจึงกลายเป็น E(x) = (25 − x) mod 26 ซึ่งกลับลำดับอักษร ดังนั้น A becomes Z, B becomes Y และเรื่อยไป นั่นคือรหัสแอตแบช ที่อาลักษณ์ชาวฮีบรูใช้กันเมื่อหลายพันปีก่อน การได้เห็นรหัสทั้งสองหล่นออกมาจากสูตรเดียวเป็นวิธีที่ชัดเจนที่สุดในการเข้าใจว่ารหัสแอฟไฟน์ขยายความครอบคลุมมันอย่างไร ลองตั้งค่าแต่ละแบบด้านบนแล้วดูตารางแทนที่ยืนยันมัน
รหัสแอฟไฟน์ปลอดภัยแค่ไหน
ตามมาตรฐานสมัยใหม่ใด ๆ รหัสแอฟไฟน์ไม่ให้ความปลอดภัยที่แท้จริงเลย ด้วยกุญแจที่เป็นไปได้เพียง 312 แบบ และยิ่งน้อยกว่านั้นที่สับเปลี่ยนข้อความได้จริง คอมพิวเตอร์สามารถลองทุกแบบได้ในเสี้ยววินาที และแม้แต่คนที่อดทนก็ใช้กำลังเดารหัสด้วยมือได้ มันมีข้อมูลลับไม่มากพอในตัวเลขเล็ก ๆ สองตัวที่จะต้านทานการโจมตี
มันยังเปราะบางต่อการวิเคราะห์ความถี่ด้วย เพราะมันเป็นรหัสแบบตัวอักษรเดียว ตัวอักษรแต่ละตัวแม็ปไปยังตัวอักษรเข้ารหัสตัวเดิมเสมอ ดังนั้นตัวอักษรเข้ารหัสที่พบบ่อยที่สุดจึงมีแนวโน้มสูงมากที่จะแทน E ซึ่งเป็นตัวอักษรที่พบบ่อยที่สุดในภาษาอังกฤษ ผู้โจมตีที่เดาหรือทราบคู่ตัวอักษรธรรมดา-ต่อ-เข้ารหัสเพียงสองคู่ ยังสามารถแก้หา a และ b ได้โดยตรงด้วยพีชคณิตเล็กน้อย ไม่มีสิ่งใดในนี้เป็นข้อบกพร่องที่ต้องแก้ มันคือสิ่งที่ทำให้รหัสแอฟไฟน์เป็นเครื่องมือสอนที่ดีเยี่ยม แต่สำหรับการปกป้องข้อมูลจริง คุณควรใช้อัลกอริทึมสมัยใหม่ที่ผ่านการตรวจทานโดยผู้เชี่ยวชาญ เช่น AES เสมอ
คำถามที่พบบ่อย
รหัสแอฟไฟน์คืออะไร
รหัสแอฟไฟน์ทำงานอย่างไร
ตัวคูณ a รับค่าใดได้บ้าง
กุญแจ a และ b ในรหัสแอฟไฟน์คืออะไร
คุณถอดรหัสแอฟไฟน์อย่างไร
ขอตัวอย่างรหัสแอฟไฟน์ประกอบได้ไหม
รหัสแอฟไฟน์เกี่ยวข้องกับรหัสซีซาร์อย่างไร
รหัสแอฟไฟน์เกี่ยวข้องกับรหัสแอตแบชอย่างไร
รหัสแอฟไฟน์มีกุญแจที่เป็นไปได้กี่แบบ
คุณเจาะรหัสแอฟไฟน์อย่างไร
รหัสแอฟไฟน์เก็บช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนไว้หรือไม่
ข้อความของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่
เครื่องมือที่เกี่ยวข้อง
ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้