T

Text Machine

เครื่องมือข้อความทรงพลัง ในเบราว์เซอร์ของคุณ

ตัวแก้รหัส Vigenère

วางข้อความเข้ารหัส Vigenère แล้วกู้คืนคำสำคัญและข้อความต้นฉบับโดยไม่ต้องรู้กุญแจ ตัวแก้รหัสจะหาความยาวของกุญแจจากดัชนีความบังเอิญ ยืนยันด้วยวิธีของ Kasiski เจาะแต่ละคอลัมน์เสมือนเป็นรหัส Caesar แล้วเลือกผลถอดรหัสที่อ่านเป็นภาษาอังกฤษได้มากที่สุด ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

ลองตัวอย่าง:

ข้อความเข้ารหัส Vigenère

วางข้อความเข้ารหัส Vigenère ด้านบน แล้วกุญแจที่กู้คืนได้ ข้อความที่ถอดรหัสแล้ว และการวิเคราะห์ความยาวของกุญแจจะปรากฏที่นี่ ยิ่งคุณให้ข้อความมากเท่าไร คำตอบก็ยิ่งน่าเชื่อถือมากขึ้นเท่านั้น

วิธีใช้ ตัวถอดรหัสวีฌ์แนร์

  1. 1

    วางข้อความเข้ารหัส

    คัดลอกข้อความที่เข้ารหัส Vigenère แล้ววางลงในกล่อง ควรมีอย่างน้อยหนึ่งย่อหน้าจึงจะได้ผลดีที่สุด ตัวอักษรจะถูกอ่านโดยไม่สนตัวพิมพ์ใหญ่เล็ก ส่วนช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนจะถูกละเว้นระหว่างการแก้รหัส

  2. 2

    อ่านกุญแจที่กู้คืนได้

    ตัวแก้รหัสจะแสดงคำสำคัญที่น่าจะเป็นมากที่สุดไว้ด้านบน คัดลอกด้วยคลิกเดียว — คุณสามารถวางมันลงในเครื่องมือรหัส Vigenère เพื่อยืนยันว่ามันถอดรหัสข้อความเดียวกันได้

  3. 3

    อ่านข้อความที่ถอดรหัสแล้ว

    ใต้กุญแจ ข้อความต้นฉบับฉบับเต็มจะปรากฏพร้อมตัวพิมพ์ใหญ่ ช่องว่าง และเครื่องหมายวรรคตอนเดิมที่ถูกนำกลับมาใส่ คัดลอกไว้เพื่อเก็บผลลัพธ์

  4. 4

    ตรวจสอบหลักฐานความยาวของกุญแจ

    แผนภูมิดัชนีความบังเอิญและแผงของ Kasiski จะแสดงเหตุผลว่าทำไมจึงเลือกความยาวกุญแจนั้น หากผลลัพธ์ดูผิดเพี้ยน ให้คลิกความยาวอื่นในแผนภูมิเพื่อบังคับการแก้รหัส หรือขยายความยาวกุญแจสูงสุด

  5. 5

    แชร์หรือล้าง

    คัดลอกลิงก์สำหรับแชร์ที่เปิดเครื่องมือขึ้นมาใหม่พร้อมข้อความเข้ารหัสเดิมของคุณเป๊ะ ๆ — ข้อความจะอยู่ในส่วนของ URL หลังเครื่องหมาย hash ซึ่งไม่เคยส่งไปถึงเซิร์ฟเวอร์ ปุ่มล้างจะรีเซ็ตทุกอย่าง

อธิบายการเจาะรหัส Vigenère

เครื่องมือนี้ทำอะไร

รหัส Vigenère ซ่อนข้อความด้วยการเลื่อนตัวอักษรแต่ละตัวด้วยจำนวนที่ต่างกัน ตามคำสำคัญที่วนซ้ำ เป็นเวลาสามศตวรรษที่แนวคิดง่าย ๆ นี้ทำให้มันได้ฉายาว่า le chiffre indéchiffrable — รหัสที่ถอดไม่ได้ — เพราะกลวิธีปกติอย่างการนับความถี่ของตัวอักษรใช้ไม่ได้ผลกับมัน แต่เครื่องมือนี้เจาะมันได้อยู่ดี โดยอัตโนมัติ และไม่ต้องให้คุณป้อนกุญแจ เพียงวางข้อความเข้ารหัสลงไป มันก็จะคืนคำสำคัญที่น่าจะเป็นมากที่สุดและข้อความที่ถอดรหัสแล้วให้

มันทำงานแบบเดียวกับที่นักวิเคราะห์รหัสลับที่เป็นมนุษย์ทำ เพียงแต่เร็วกว่า: มันหาว่ากุญแจยาวเท่าไร แยกข้อความออกเป็นรหัส Caesar แยกกันจำนวนเท่านั้น แก้แต่ละตัว แล้วตรวจสอบว่าผลลัพธ์อ่านเป็นภาษาอังกฤษได้จริง ไม่ต้องมีกุญแจ ไม่ต้องเดา และไม่มีอะไรหลุดออกจากเบราว์เซอร์ของคุณ — การโจมตีทั้งหมดทำงานบนเครื่องของคุณเอง

เหตุใดรหัส Vigenère จึงถูกเจาะได้

คำสำคัญที่มีความยาว L จะเข้ารหัสตัวอักษรทุกตัวที่ตำแหน่ง L ด้วยค่าการเลื่อนเดียวกัน ดังนั้นหากคุณเอาตัวอักษรที่ 1, ที่ (L+1), ที่ (2L+1) และเรื่อยไป ตัวอักษรทุกตัวในกลุ่มนั้นถูกเลื่อนด้วยจำนวนเท่ากัน — พวกมันรวมกันเป็นรหัส Caesar ธรรมดา และเป็นเช่นนี้กับแต่ละตำแหน่งเริ่มต้นทั้ง L ตำแหน่ง รหัส Vigenère จึงไม่ใช่ปัญหายากปัญหาเดียว แต่เป็นปัญหาง่าย ๆ L ข้อซ้อนกันอยู่ และสิ่งเดียวที่กั้นระหว่างคุณกับข้อความต้นฉบับคือการค้นหาค่า L

เมื่อรู้ความยาวของกุญแจแล้ว แต่ละคอลัมน์จะคงความถี่ของตัวอักษรที่เอียงไม่สม่ำเสมอแบบภาษาอังกฤษไว้ เพียงแต่ถูกติดป้ายใหม่ด้วยการเลื่อนเพียงครั้งเดียว นั่นคือสถานการณ์ที่การวิเคราะห์ความถี่แบบคลาสสิกถูกสร้างขึ้นมาเพื่อจัดการพอดี ศิลปะทั้งหมดของการเจาะรหัส Vigenère จึงสรุปลงเป็นคำถามเดียว: กุญแจยาวเท่าไร?

การหาความยาวของกุญแจด้วยดัชนีความบังเอิญ

ดัชนีความบังเอิญวัดความน่าจะเป็นที่ตัวอักษรสองตัวซึ่งสุ่มหยิบจากข้อความจะเป็นตัวเดียวกัน ภาษาอังกฤษทั่วไปอยู่ที่ราว 0.066 เพราะตัวอักษรของมันถูกใช้อย่างไม่สม่ำเสมอมาก ส่วนข้อความที่สุ่มอย่างสมบูรณ์อยู่ใกล้ 0.038 เมื่อคุณแยกข้อความเข้ารหัสออกเป็นจำนวนคอลัมน์ที่ถูกต้อง แต่ละคอลัมน์จะเป็นแบบอักษรเดี่ยวและดัชนีความบังเอิญของมันจะดีดกลับขึ้นไปทางค่าของภาษาอังกฤษ แต่ถ้าแยกเป็นจำนวนที่ผิด คอลัมน์ก็จะยังคงราบเรียบและดูสุ่มอยู่ที่ 0.038

เครื่องมือจะลองทุกความยาวกุญแจตั้งแต่หนึ่งไปจนถึงค่าสูงสุดที่คุณเลือก วัดดัชนีความบังเอิญเฉลี่ยของคอลัมน์สำหรับแต่ละความยาว แล้ววาดผลลัพธ์เป็นแผนภูมิแท่ง ความยาวที่แท้จริงจะโดดเด่นเป็นแท่งที่สูง — และทวีคูณของมันก็ด้วย เพราะความยาวสิบก็ทำให้ทุกกลุ่มของห้าเข้าแถวกันด้วย ความกำกวมของทวีคูณนี้เองที่ทำให้เครื่องมือไม่เพียงเชื่อแท่งที่สูงที่สุดเฉย ๆ ดังที่ส่วนถัด ๆ ไปจะอธิบาย

วิธีของ Kasiski

ยังมีวิธีที่สองซึ่งเก่ากว่าในการหาความยาวของกุญแจ ค้นพบโดย Friedrich Kasiski ในปี 1863 เมื่อคำที่พบบ่อยอย่าง THE เข้าแถวตรงกับส่วนเดียวกันของคำสำคัญสองครั้ง มันจะถูกเข้ารหัสเป็นลำดับข้อความเข้ารหัสเดียวกันทั้งสองครั้ง ระยะห่างระหว่างจุดซ้ำสองจุดนั้นต้องเป็นจำนวนเท่าของความยาวกุญแจที่ลงตัว — ดังนั้นความยาวกุญแจจึงหารระยะห่างนั้นได้ลงตัว หาลำดับที่ซ้ำกันหลาย ๆ ชุด วัดระยะห่าง แล้วความยาวกุญแจก็จะซ่อนอยู่ในบรรดาตัวประกอบร่วมของระยะห่างเหล่านั้น

เครื่องมือจะสแกนข้อความเข้ารหัสหาลำดับสามตัวอักษรที่ซ้ำกัน รวบรวมระยะห่างระหว่างพวกมัน แล้วนับว่ามีระยะห่างกี่ชุดที่ตัวประกอบแต่ละตัวหารลงตัว ตัวประกอบที่มีหลักฐานสนับสนุนมากที่สุดคือความยาวกุญแจที่น่าจะเป็นมากที่สุด สิ่งนี้แสดงเป็นแผงหลักฐานแยกต่างหาก เป็นอิสระจากดัชนีความบังเอิญ เพื่อให้สองเทคนิคที่ต่างกันเห็นพ้องกันในคำตอบได้

การแก้แต่ละคอลัมน์และการอ่านคำสำคัญออกมา

เมื่อกำหนดความยาวของกุญแจแล้ว ทุกคอลัมน์คือรหัส Caesar และรหัส Caesar ก็แตกได้ในทันที สำหรับแต่ละคอลัมน์ ตัวแก้รหัสจะลองการเลื่อนทั้งยี่สิบหกแบบ แล้วเก็บแบบที่ตัวอักษรหลังถอดรหัสเข้ากับความถี่ที่คาดหวังของภาษาอังกฤษได้ดีที่สุด ซึ่งวัดด้วยการทดสอบไคกำลังสอง (chi-squared) การเลื่อนที่ชนะของคอลัมน์หนึ่งคือหนึ่งตัวอักษรของคำสำคัญ: การเลื่อนสิบเอ็ดคือ L การเลื่อนสี่คือ E และเรื่อยไป อ่านการเลื่อนที่ชนะตามลำดับ แล้วคำสำคัญก็จะสะกดตัวเองออกมา

การถอดรหัสทั้งข้อความด้วยคำสำคัญที่กู้คืนได้นั้นจะคืนข้อความต้นฉบับกลับมา พร้อมตัวพิมพ์ใหญ่ ช่องว่าง และเครื่องหมายวรรคตอนเดิมที่ถูกใส่กลับเข้าไป ณ ตำแหน่งเดิมเป๊ะ ๆ หากกุญแจที่กู้คืนได้บังเอิญเป็นการซ้ำ — เช่น LEMONLEMON ทั้งที่กุญแจจริงคือ LEMON — เครื่องมือจะยุบมันลงเป็นคาบที่สั้นที่สุด ดังนั้นคุณจะเห็นคำสำคัญที่แท้จริงและสั้นที่สุดเสมอ

แก้ก่อน แล้วค่อยตรวจสอบ — เหตุใด bigram จึงสำคัญ

ตัวแก้รหัสแบบไร้เดียงสาจะเลือกความยาวของกุญแจจากดัชนีความบังเอิญแล้วหยุดแค่นั้น ซึ่งผิดพลาดได้ในสองกรณีที่พบบ่อย: ข้อความที่ซ้ำซากมากอาจบิดเบือนสถิติ และความยาวที่แท้จริงก็สับสนกับตัวหารของมันได้ง่าย เครื่องมือนี้หลีกเลี่ยงกับดักดังกล่าวด้วยการแก้รหัสที่ทุกความยาวที่เป็นไปได้ แล้วตัดสินผลลัพธ์จากว่าผลถอดรหัสแต่ละแบบอ่านเป็นภาษาอังกฤษได้มากเพียงใด — แก้ก่อน ตรวจสอบทีหลัง

ตัวตัดสินไม่ใช่ความถี่ของตัวอักษรเดี่ยว ซึ่งหลอกได้ง่ายอย่างน่าประหลาดใจ: กุญแจที่ผิดไปเล็กน้อยอาจให้ข้อความที่เละเทะแต่บังเอิญมีส่วนผสมของตัวอักษรที่ดูสมเหตุสมผล แทนที่จะเป็นเช่นนั้น เครื่องมือจะให้คะแนนผลถอดรหัสแต่ละแบบด้วย bigram ของมัน — ความน่าจะเป็นของคู่ตัวอักษรที่อยู่ติดกันทุกคู่ ซึ่งเรียนรู้มาจากกองข้อความภาษาอังกฤษขนาดใหญ่ ภาษาอังกฤษจริงเต็มไปด้วยคู่อย่าง TH, HE และ ER และแทบไม่มี QJ หรือ ZX เลย ดังนั้นตัวอักษรกุญแจที่ผิดเพียงตัวเดียวก็แทรกคู่ที่เป็นไปไม่ได้เข้ามาและฉุดคะแนนจมลง ผลถอดรหัสที่มีความเข้ากันของ bigram ดีที่สุดจะเป็นผู้ชนะ และเมื่อเสมอกันจะให้กุญแจที่สั้นกว่าชนะ ซึ่งเป็นเหตุผลที่รหัส Caesar ธรรมดาคลี่คลายเป็นกุญแจตัวอักษรเดียวได้อย่างถูกต้อง

คุณต้องการข้อความมากแค่ไหน และเมื่อใดที่มันทำงานได้ยาก

เนื่องจากแต่ละคอลัมน์ถูกแก้ด้วยการวิเคราะห์ความถี่ สิ่งที่สำคัญคือมีตัวอักษรกี่ตัวตกลงในแต่ละคอลัมน์ — นั่นคือความยาวรวมหารด้วยความยาวของกุญแจ ด้วยตัวอักษรราวสี่สิบตัวขึ้นไปต่อคอลัมน์ การกู้คืนมักจะแม่นยำเป๊ะ ทั้งกุญแจและข้อความต้นฉบับ ย่อหน้าที่มีสองร้อยตัวอักษรเจาะกุญแจสั้นได้สบาย ส่วนกุญแจที่ยาวสักสิบกว่าตัวต้องการข้อความเข้ารหัสหลายร้อยตัวอักษรจึงจะมั่นใจได้

เมื่อข้อความเข้ารหัสสั้นเมื่อเทียบกับกุญแจ คอลัมน์จะบางและการนับความถี่ต่อคอลัมน์ก็จะมีสัญญาณรบกวนมากขึ้น ตัวแก้รหัสก็ยังคงคืนความพยายามที่ดีที่สุดของมัน — บ่อยครั้งเป็นผลที่เกือบถูก ผิดไปหนึ่งหรือสองตัวอักษรกุญแจแต่ยังอ่านออก — แทนที่จะไม่คืนอะไรเลย หากผลลัพธ์ดูเกือบถูกต้อง วิธีแก้ตามปกติคือเพียงเพิ่มข้อความเข้ารหัส หรือปรับความยาวของกุญแจด้วยมือโดยใช้แผนภูมิ รหัสจะต้านทานก็ต่อเมื่อมีข้อความไม่พอที่จะวัดได้จริง ๆ เท่านั้น

คำถามที่พบบ่อย

เจาะรหัส Vigenère ได้จริงหรือโดยไม่ต้องมีกุญแจ?
ได้ รหัส Vigenère แบบกุญแจวนซ้ำคือรหัส Caesar หลายตัวที่สลับสานกันอยู่ และรหัส Caesar ก็แตกได้ด้วยการวิเคราะห์ความถี่ ตัวแก้รหัสจะหาความยาวของกุญแจ แยกข้อความออกเป็นคอลัมน์จำนวนเท่านั้น เจาะแต่ละตัว แล้วอ่านคำสำคัญออกมาจากผลลัพธ์ — ทั้งหมดนี้โดยที่คุณไม่ต้องรู้กุญแจล่วงหน้า
ตัวแก้รหัสหาความยาวของกุญแจได้อย่างไร?
สองวิธีพร้อมกัน มันวัดดัชนีความบังเอิญเฉลี่ยของทุกความยาวที่เป็นไปได้ — ความยาวที่ถูกต้องและทวีคูณของมันจะได้คะแนนใกล้ 0.066 แบบภาษาอังกฤษ ขณะที่ความยาวที่ผิดจะดูสุ่มใกล้ 0.038 — และมันรันวิธีของ Kasiski โดยแยกตัวประกอบของระยะห่างระหว่างลำดับที่ซ้ำกัน ความยาวที่ทั้งสองวิธีเห็นพ้องกันมักจะถูกต้องเสมอ
ดัชนีความบังเอิญคืออะไร?
คือความน่าจะเป็นที่ตัวอักษรสองตัวซึ่งสุ่มหยิบจากข้อความจะเป็นตัวเดียวกัน ภาษาอังกฤษอยู่ที่ประมาณ 0.066 เพราะตัวอักษรของมันถูกใช้อย่างไม่สม่ำเสมอ ส่วนข้อความสุ่มอยู่ที่ประมาณ 0.038 เมื่อข้อความเข้ารหัสถูกแยกออกเป็นจำนวนคอลัมน์ที่ถูกต้อง แต่ละคอลัมน์จะดูเหมือนภาษาอังกฤษอีกครั้ง ซึ่งเป็นวิธีที่เครื่องมือใช้ตรวจจับความยาวของกุญแจ
วิธีของ Kasiski คืออะไร?
วิธีที่ตีพิมพ์โดย Friedrich Kasiski ในปี 1863 เมื่อคำที่ซ้ำกันเข้าแถวตรงกับส่วนเดียวกันของกุญแจ มันจะถูกเข้ารหัสเหมือนกัน และระยะห่างระหว่างจุดซ้ำเหล่านั้นจะเป็นจำนวนเท่าของความยาวกุญแจ ด้วยการรวบรวมระยะห่างเช่นนี้แล้วดูตัวประกอบร่วมของพวกมัน คุณจะกู้คืนความยาวกุญแจที่เป็นไปได้โดยเป็นอิสระจากสถิติความถี่
ทำไมกุญแจที่กู้คืนได้อาจผิดไปเล็กน้อย?
แต่ละคอลัมน์ถูกแก้ด้วยการวิเคราะห์ความถี่ ซึ่งต้องการตัวอักษรมากพอจึงจะน่าเชื่อถือ หากข้อความเข้ารหัสสั้นเมื่อเทียบกับความยาวของกุญแจ บางคอลัมน์จะมีตัวอักษรน้อยเกินไป และตัวอักษรกุญแจหนึ่งหรือสองตัวอาจคลาดเคลื่อน ข้อความต้นฉบับมักจะยังอ่านออกได้ วิธีแก้คือเพิ่มข้อความเข้ารหัส หรือปรับความยาวของกุญแจด้วยมือในแผนภูมิ
ฉันต้องใช้ข้อความเข้ารหัสมากแค่ไหน?
ตั้งเป้าให้มีตัวอักษรอย่างน้อยสี่สิบตัวต่อคอลัมน์ — นั่นคือความยาวรวมหารด้วยความยาวของกุญแจ กุญแจสั้นเจาะได้ง่ายจากย่อหน้าเดียว ส่วนกุญแจยาวสักสิบกว่าตัวต้องการข้อความเข้ารหัสหลายร้อยตัวอักษรเพื่อการกู้คืนที่แม่นยำ ข้อความยิ่งมากยิ่งดีเสมอ
ทำไมเครื่องมือถึงตรวจ bigram แทนที่จะดูแค่ความถี่ของตัวอักษร?
ความถี่ของตัวอักษรเดี่ยวถูกหลอกได้ — กุญแจที่ผิดไปเล็กน้อยบางครั้งให้ข้อความเละเทะแต่มีส่วนผสมของตัวอักษรที่ดูสมเหตุสมผล ความเข้ากันของ bigram ให้คะแนนคู่ตัวอักษรที่อยู่ติดกันทุกคู่เทียบกับภาษาอังกฤษจริง ที่ซึ่ง TH และ HE พบบ่อย ส่วน QJ หรือ ZX แทบไม่ปรากฏเลย กุญแจที่ผิดจะแทรกคู่ที่เป็นไปไม่ได้เข้ามาและได้คะแนนแย่ ดังนั้นผลถอดรหัสที่เป็นภาษาอังกฤษจริงจึงเป็นผู้ชนะ
ฉันบังคับความยาวกุญแจค่าหนึ่งได้หรือไม่?
ได้ คลิกแท่งใดก็ได้ในแผนภูมิความยาวกุญแจเพื่อแก้รหัสที่ความยาวนั้นเป๊ะ ๆ และกดอัตโนมัติเพื่อกลับไปตรวจหาอัตโนมัติ คุณยังเพิ่มความยาวกุญแจสูงสุดที่เครื่องมือค้นหาได้หากคุณสงสัยว่าเป็นกุญแจยาว สิ่งนี้สะดวกเมื่อคุณรู้หรือเดาความยาวได้อยู่แล้ว
มันใช้ได้กับ Beaufort, Gronsfeld หรือรหัสแบบหลายอักษรอื่น ๆ หรือไม่?
ตัวแก้รหัสนี้มุ่งไปที่รหัส Vigenère แบบกุญแจวนซ้ำมาตรฐาน ญาติใกล้ชิดอย่าง Gronsfeld (Vigenère แบบตัวเลข) มักยอมจำนนได้บางส่วน แต่ Beaufort และเวอร์ชัน autokey ใช้เลขคณิตที่ต่างออกไปและอาจใช้ไม่ได้ หากคุณไม่แน่ใจว่ามีรหัสชนิดใด ให้รันตัวระบุรหัสลับก่อน แล้วจึงใช้เครื่องมือที่ตรงกัน
ข้อความเข้ารหัสของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การโจมตีทั้งหมดทำงานในเบราว์เซอร์ของคุณ ดังนั้นข้อความของคุณจึงไม่เคยถูกอัปโหลด บันทึก หรือจัดเก็บ แม้แต่ลิงก์สำหรับแชร์ก็เก็บข้อความเข้ารหัสของคุณไว้ในส่วนของ URL หลังเครื่องหมาย hash ซึ่งเบราว์เซอร์ไม่เคยส่งไปยังเซิร์ฟเวอร์ มันจึงเป็นส่วนตัวจนกว่าคุณจะเลือกแชร์เอง
สิ่งนี้ต่างจากเครื่องมือรหัส Vigenère อย่างไร?
เครื่องมือรหัส Vigenère เข้ารหัสและถอดรหัสเมื่อคุณรู้กุญแจอยู่แล้ว ส่วนตัวแก้รหัสนี้มีไว้สำหรับเมื่อคุณไม่รู้: มันกู้คืนกุญแจและข้อความต้นฉบับจากข้อความเข้ารหัสเพียงอย่างเดียว ใช้ตัวแก้รหัสเพื่อเจาะข้อความ แล้วใช้เครื่องมือรหัสเพื่อยืนยันว่ากุญแจนั้นเข้ารหัสกลับได้เป๊ะ ๆ

เครื่องมือที่เกี่ยวข้อง

ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้

ตัวแปลง Unix Timestamp

ตัวแปลง JSON เป็น CSV

ตัวแปลง CSV เป็น JSON

ตัวแปลง JSON เป็น YAML

ตัวแปลงข้อความเป็นไบนารี

ตัวแปลงข้อความเป็นเลขฐานสิบหก