T

Text Machine

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

การวิเคราะห์ความถี่

วางข้อความใด ๆ เพื่อดูว่าตัวอักษรแต่ละตัวปรากฏบ่อยแค่ไหน เทียบเคียงกันกับความถี่ของภาษาอังกฤษที่เขียน อ่านการนับ bigram และ trigram ตรวจสอบดัชนีความบังเอิญ (Index of Coincidence) เพื่อแยกรหัสแบบอักษรเดี่ยว (monoalphabetic) ออกจากแบบหลายอักษร (polyalphabetic) และส่งออกตาราง ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

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

ข้อความที่จะวิเคราะห์

วางข้อความด้านบน แล้วความถี่ของตัวอักษร, bigram, trigram และดัชนีความบังเอิญของมันจะปรากฏที่นี่

วิธีใช้ การวิเคราะห์ความถี่

  1. 1

    วางข้อความของคุณ

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

  2. 2

    อ่านสรุป

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

  3. 3

    ศึกษาแผนภูมิความถี่ของตัวอักษร

    เปรียบเทียบแท่งกราฟของตัวอักษรแต่ละตัวกับเครื่องหมายภาษาอังกฤษ สลับไปที่ 'ตามความถี่' เพื่อจัดอันดับตัวอักษรและดูรูปร่างโดยรวม — ขรุขระสำหรับรหัสแทนที่ ราบเรียบสำหรับแบบหลายอักษร

  4. 4

    สแกน bigram และ trigram

    ดูคู่และชุดสามตัวที่พบบ่อยที่สุด ในรหัส trigram อันดับต้นมักเป็น THE ที่ถูกอำพราง ซึ่งมอบตัวอักษรสามตัวให้คุณในคราวเดียว

  5. 5

    ส่งออกหรือแชร์

    ดาวน์โหลดตารางความถี่เป็น CSV สำหรับบันทึกหรือสเปรดชีตของคุณ หรือคัดลอกลิงก์สำหรับแชร์ที่เปิดเครื่องมือขึ้นมาใหม่พร้อมข้อความเดิมของคุณ ทุกอย่างยังคงอยู่ในเบราว์เซอร์ของคุณ

อธิบายการวิเคราะห์ความถี่ของตัวอักษร

การวิเคราะห์ความถี่คืออะไร?

การวิเคราะห์ความถี่คือการศึกษาว่าตัวอักษรแต่ละตัว คู่ของตัวอักษร หรือชุดสามตัวอักษร ปรากฏบ่อยแค่ไหนในข้อความ เนื่องจากตัวอักษรของภาษาไม่ได้ถูกใช้เท่ากัน — E และ T พบได้ทุกที่ในภาษาอังกฤษ ขณะที่ Q และ Z พบได้ยาก — รูปแบบของความถี่จึงทำหน้าที่เหมือนลายนิ้วมือ การนับรูปแบบนั้นคือเทคนิคที่เก่าแก่และทรงพลังที่สุดในการวิเคราะห์รหัสลับแบบคลาสสิก ซึ่งบันทึกไว้เป็นครั้งแรกโดยนักปราชญ์ชาวอาหรับนาม al-Kindi ในศตวรรษที่เก้า

เครื่องมือนี้นับตัวอักษรในสิ่งที่คุณวางลงไป แสดงแต่ละตัวเป็นแท่งกราฟเทียบกับความถี่ที่คาดหวังของภาษาอังกฤษ แสดงรายการ bigram และ trigram ที่พบบ่อยที่สุด และรายงานดัชนีความบังเอิญ ตัวเลขเหล่านี้รวมกันบอกคุณได้ว่าข้อความเป็นงานเขียนทั่วไป รหัสแทนที่อย่างง่าย หรือบางอย่างที่ใช้อักษรหลายชุดพร้อมกัน — โดยที่คุณไม่ต้องนับตัวอักษรด้วยมือเลยสักตัว

การอ่านแผนภูมิความถี่ของตัวอักษร

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

ในภาษาอังกฤษปกติ แท่งกราฟที่สูงที่สุดคือ E, T, A, O, I และ N และแผนภูมิดูขรุขระไม่สม่ำเสมอ รหัสแบบอักษรเดี่ยวจะรักษารูปร่างขรุขระนั้นไว้แต่เลื่อนยอดไปยังตัวอักษรอื่น เพราะตัวอักษรแต่ละตัวเพียงถูกสลับเป็นอีกตัวหนึ่ง รหัสแบบหลายอักษรจะทำให้แผนภูมิราบเรียบจนทุกแท่งกราฟสูงพอ ๆ กัน เพราะตัวอักษรต้นฉบับตัวเดียวกันถูกเข้ารหัสต่างกันขึ้นอยู่กับตำแหน่ง การจดจำรูปร่างสองแบบนั้นคือทักษะที่มีประโยชน์ที่สุดเพียงหนึ่งเดียวในการถอดรหัสลับแบบคลาสสิก

ดัชนีความบังเอิญ

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

สิ่งนี้ทำให้ IoC เป็นการทดสอบที่เร็วที่สุดในการแยกตระกูลของรหัสออกจากกัน รหัส Caesar, Atbash และการแทนที่ด้วยคำสำคัญเพียงแค่ติดป้ายตัวอักษรใหม่ ดังนั้นโปรไฟล์ภาษาอังกฤษที่ไม่สม่ำเสมอจึงคงอยู่และ IoC ยังคงสูงใกล้ 0.066 ส่วน Vigenère และรหัสแบบหลายอักษรอื่น ๆ ผสมอักษรหลายชุด ทำให้ความถี่ราบเรียบและดึง IoC ลงไปทาง 0.04 เครื่องมือจะแสดงค่าพร้อมคำใบ้สั้น ๆ ดังนั้นค่าที่อ่านได้สูงจะชี้คุณไปยังรหัสแทนที่ และค่าที่ต่ำจะชี้คุณไปยังรหัสแบบหลายอักษร

bigram, trigram และรูปแบบการอยู่ติดกัน

ตัวอักษรเดี่ยวเป็นเพียงจุดเริ่มต้น ภาษาอังกฤษยังมีคู่และชุดสามตัวอักษรที่นิยมใช้อย่างมาก: TH, HE, IN, ER และ AN คือ bigram ที่พบบ่อยที่สุด และ THE, AND, ING และ ENT ครองตำแหน่ง trigram เครื่องมือนี้แสดงรายการคู่และชุดสามตัวที่พบบ่อยที่สุดในข้อความของคุณ โดยนับเฉพาะภายในคำเท่านั้น เพื่อที่ช่องว่างจะไม่เชื่อมตัวอักษรสองตัวที่ไม่เกี่ยวข้องกันให้กลายเป็นคู่ที่ผิดพลาด

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

การถอดรหัสลับด้วยการวิเคราะห์ความถี่

ในการโจมตีรหัสแทนที่แบบอักษรเดี่ยว ให้เรียงแผนภูมิตามความถี่แล้วจัดเทียบกับภาษาอังกฤษ ตัวอักษรเข้ารหัสที่พบบ่อยที่สุดน่าจะเป็น E ตัวถัดไปน่าจะเป็น T และ trigram อันดับต้นน่าจะเป็น THE เขียนการคาดเดาเหล่านั้นด้วยดินสอ แล้วใช้รายการ bigram และ trigram ขยายผล — เมื่อคุณรู้ E และ T แล้ว คู่ TH และคำว่า THE จะเข้าที่อย่างรวดเร็ว และที่เหลือของข้อความก็คลี่คลายต่อจากนั้น

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

แบบอักษรเดี่ยวเทียบกับแบบหลายอักษรในพริบตา

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

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

ข้อจำกัดและแนวปฏิบัติที่ดี

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

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

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

การวิเคราะห์ความถี่คืออะไร?
การวิเคราะห์ความถี่นับว่าตัวอักษรแต่ละตัว คู่ และชุดสามตัว ปรากฏบ่อยแค่ไหนในข้อความ เนื่องจากภาษาใช้ตัวอักษรไม่สม่ำเสมอ — E และ T พบบ่อยในภาษาอังกฤษ ส่วน Q และ Z พบได้ยาก — รูปแบบนั้นจึงทำหน้าที่เป็นลายนิ้วมือ มันเป็นเทคนิคที่เก่าแก่ที่สุดในการวิเคราะห์รหัสลับ และเป็นวิธีหลักในการถอดรหัสแทนที่แบบคลาสสิก
ฉันจะใช้การวิเคราะห์ความถี่ถอดรหัสได้อย่างไร?
เรียงแผนภูมิตามความถี่แล้วจับคู่กับภาษาอังกฤษ: ตัวอักษรเข้ารหัสที่พบบ่อยที่สุดน่าจะเป็น E ตัวถัดไปคือ T และ trigram อันดับต้นน่าจะเป็น THE เขียนการคาดเดาเหล่านั้นด้วยดินสอ แล้วขยายผลด้วยรายการ bigram และ trigram จนข้อความอ่านออก สำหรับรหัส Caesar เพียงหาค่าการเลื่อนที่ทำให้ยอดตรงกับ E
ดัชนีความบังเอิญคืออะไร?
ดัชนีความบังเอิญวัดโอกาสที่ตัวอักษรสองตัวที่สุ่มหยิบจากข้อความจะเป็นตัวเดียวกัน ภาษาอังกฤษอยู่ที่ประมาณ 0.067 และข้อความสุ่มประมาณ 0.038 รหัสแบบอักษรเดี่ยวจะรักษาค่าให้สูงใกล้ 0.066 ในขณะที่รหัสแบบหลายอักษรอย่าง Vigenère จะทำให้มันราบเรียบลงไปทาง 0.04 ซึ่งเป็นวิธีที่เร็วที่สุดในการแยกสองตระกูลนี้ออกจากกัน
อะไรคือความแตกต่างระหว่างแบบอักษรเดี่ยวกับแบบหลายอักษร?
ในรหัสแบบอักษรเดี่ยว ตัวอักษรแต่ละตัวจะแมปไปยังตัวอักษรอีกตัวเดิมเสมอ ดังนั้นโปรไฟล์ความถี่ภาษาอังกฤษที่ขรุขระจึงคงอยู่ และดัชนีความบังเอิญที่สูงกับแผนภูมิที่ไม่สม่ำเสมอจะเปิดเผยมัน ส่วนรหัสแบบหลายอักษรใช้อักษรหลายชุด ดังนั้นตัวอักษรต้นฉบับตัวหนึ่งจึงกลายเป็นตัวอักษรเข้ารหัสได้หลายตัว ทำให้แผนภูมิราบเรียบและลดดัชนีความบังเอิญลง
ทำไมเครื่องมือถึงแสดง bigram และ trigram?
ตัวอักษรเดี่ยวไม่เพียงพอเสมอไป ภาษาอังกฤษมีคู่และชุดสามตัวที่นิยมใช้อย่างมากเช่น TH, HE, THE และ ING ในรหัสแทนที่ THE ที่ถูกอำพรางมักเป็น trigram ที่พบบ่อยที่สุด ทำให้คุณได้ตัวอักษรสามตัวในคราวเดียว และ bigram ที่ซ้ำกันสามารถเปิดเผยความยาวกุญแจ Vigenère ผ่านวิธีของ Kasiski
แท่งกราฟและเครื่องหมายแนวตั้งหมายความว่าอย่างไร?
แท่งกราฟที่เติมเต็มคือความถี่ที่ตัวอักษรปรากฏในข้อความของคุณ เป็นเปอร์เซ็นต์ของตัวอักษรทั้งหมด เครื่องหมายเส้นแนวตั้งบาง ๆ ในแถวเดียวกันคือความถี่ของตัวอักษรนั้นในภาษาอังกฤษทั่วไป แท่งกราฟที่เลยเครื่องหมายไปแสดงว่าปรากฏมากเกินสัดส่วน ส่วนที่สั้นกว่าแสดงว่าพบได้ยากกว่าปกติ การเปรียบเทียบนี้แสดงให้เห็นในพริบตาว่าข้อความของคุณต่างจากภาษาอังกฤษธรรมดาอย่างไร
ฉันต้องใช้ข้อความมากแค่ไหนเพื่อให้ผลลัพธ์น่าเชื่อถือ?
การวิเคราะห์ความถี่อิงสถิติ ดังนั้นยิ่งยาวยิ่งดี ตัวอักษรเพียงสิบกว่าตัวอาจแสดงความถี่ที่ทำให้เข้าใจผิดด้วยความบังเอิญล้วน ๆ ขณะที่ย่อหน้าเต็ม ๆ จะลงตัวใกล้รูปแบบที่คาดหวัง หากตัวอย่างดูคลุมเครือ มักเป็นเพราะมันสั้นเกินไป มากกว่าจะเป็นเพราะวิธีการล้มเหลว ตั้งเป้าให้มีอย่างน้อยหนึ่งหรือสองประโยค
มันใช้ได้กับภาษาอื่นนอกจากภาษาอังกฤษหรือไม่?
มันนับตัวอักษร A ถึง Z และเปรียบเทียบกับค่าฐานภาษาอังกฤษ ดังนั้นการนับจึงถูกต้องสำหรับข้อความใด ๆ แต่การเปรียบเทียบมีความหมายเฉพาะกับร้อยแก้วภาษาอังกฤษเท่านั้น ภาษาอื่นมีโปรไฟล์ความถี่ของตัวเอง ดังนั้นแท่งกราฟจะไม่ตรงกับเครื่องหมาย แม้ว่าการนับดิบ, bigram และดัชนีความบังเอิญจะยังคงมีประโยชน์
ฉันวิเคราะห์ Base64, Morse หรือไบนารีได้หรือไม่?
เครื่องมือนี้ศึกษาความถี่ของตัวอักษร จึงทำงานได้ดีที่สุดกับข้อความที่เป็นตัวอักษรและรหัสลับ การเข้ารหัสอย่าง Base64, Morse หรือไบนารี แทนข้อความเป็นสัญลักษณ์หรือตัวเลขแทนที่จะเป็นตัวอักษร ดังนั้นคุณควรระบุและถอดมันก่อน แล้วจึงรันการวิเคราะห์ความถี่กับตัวอักษรที่อยู่ข้างใต้ ตัวระบุรหัสลับสามารถบอกคุณได้ว่าคุณมีการเข้ารหัสชนิดใด
ข้อความของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การนับทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณทั้งหมด ดังนั้นข้อความของคุณจึงไม่เคยถูกอัปโหลด บันทึก หรือจัดเก็บ แม้แต่ลิงก์สำหรับแชร์ก็เก็บข้อความของคุณไว้ในส่วนของ URL หลังเครื่องหมาย hash ซึ่งเบราว์เซอร์ไม่เคยส่งไปยังเซิร์ฟเวอร์ มันจึงเป็นส่วนตัวจนกว่าคุณจะเลือกแชร์เอง
ฉันส่งออกตารางความถี่ได้หรือไม่?
ได้ ปุ่มส่งออก CSV จะดาวน์โหลดตาราง A ถึง Z เต็ม ๆ พร้อมจำนวนนับของตัวอักษรแต่ละตัว เปอร์เซ็นต์ในข้อความของคุณ และเปอร์เซ็นต์ค่าฐานภาษาอังกฤษ พร้อมเปิดในสเปรดชีตหรือวางลงในบันทึกของคุณ คุณยังสามารถคัดลอกลิงก์สำหรับแชร์ที่เปิดเครื่องมือขึ้นมาใหม่พร้อมข้อความเดิมได้ด้วย

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

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

ตัวถอดรหัสแทนที่

ตัวแปลง Unix Timestamp

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

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

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

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