วิทยาการเข้ารหัส การเข้ารหัส และการวิเคราะห์การเข้ารหัส

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

1. วิทยาการเข้ารหัสและองค์ประกอบ

Cryptologyเป็นสาขาความรู้ที่ประกอบด้วย:

  • การเข้ารหัส (ศาสตร์แห่งยันต์)

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

  • Cryptanalysis (วิธีการถอดรหัสรหัสลับเหล่านี้)

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

2. คีย์การเข้ารหัส

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

ขนาดของคีย์การเข้ารหัสจะวัดเป็นบิต และนั่นหมายความว่าคีย์เข้ารหัสมีความยาว การเข้ารหัสที่ดีมีความยาว 128 บิต

ประเภทของคีย์เข้ารหัส:

  1. ปุ่มสมมาตร (ปุ่มลับ) ไม่น่าแปลกใจที่คีย์ดังกล่าวถูกใช้ในสิ่งที่เรียกว่าอัลกอริทึมคีย์สมมาตร จุดประสงค์หลักคือดำเนินการส่งต่อหรือย้อนกลับการแปลงรหัสลับ (การเข้ารหัส/ถอดรหัส การตรวจสอบรหัสยืนยันข้อความ)

  2. คีย์อสมมาตร ใช้ในอัลกอริทึมการเข้ารหัสคีย์อสมมาตร (เช่น เมื่อตรวจสอบลายเซ็นดิจิทัลอิเล็กทรอนิกส์)

เนื่องจากเราจะทำงานร่วมกับอัลกอริธึมการเข้ารหัสคีย์สมมาตร เราจึงไม่ลงรายละเอียดมากเกินไปในที่นี้

3. ตัวอักษรทดแทน

ตัวอักษรที่ใช้แทนคือชุดอักขระทั้งหมดที่ใช้เข้ารหัสอักขระอินพุต

4. แนวทางการเข้ารหัส

มีแนวทางและวิธีการวิเคราะห์การเข้ารหัสที่แตกต่างกันมากมาย เช่น วิธีการถอดรหัสรหัสลับ

เราจะอธิบายสิ่งที่ง่ายที่สุด:

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

  2. การวิเคราะห์ด้วยการเข้ารหัสโดยอาศัยข้อมูลทางสถิติ — ในแนวทางนี้ เรารวบรวมสถิติเกี่ยวกับการเกิดขึ้นของอักขระต่างๆ ในรูปแบบไซเฟอร์เท็กซ์ จากนั้นเราจะถอดรหัสตามสถิติเกี่ยวกับความถี่ของการเกิดขึ้นของอักขระต่างๆ ในรูปแบบข้อความล้วน

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

    ข้อเสียของวิธีนี้คือการพึ่งพาภาษาเฉพาะ ผู้แต่ง และรูปแบบของข้อความ

5. รหัสซีซาร์

นี่เป็นหนึ่งในวิธีการเข้ารหัสที่ง่ายและเป็นที่รู้จักมากที่สุด แน่นอนว่าชื่อของมันมาจากจักรพรรดิ Gaius Julius Caesar ซึ่งใช้วิธีนี้เพื่อติดต่อกับนายพลอย่างลับๆ

รหัสซีซาร์เป็นรหัสแทนซึ่งอักขระแต่ละตัวในข้อความธรรมดาจะถูกแทนที่ด้วยอักขระที่มีจำนวนตำแหน่งคงที่ทางซ้ายหรือขวาในตัวอักษร

สมมติว่าเราตั้งกะเป็น 3 ในกรณีนี้ A จะถูกแทนที่ด้วย D B จะกลายเป็น E ไปเรื่อยๆ

นี่คือจำนวนทฤษฎีขั้นต่ำที่คุณจะต้องใช้ในการดำเนินโครงการขั้นสุดท้าย ไปที่รายละเอียดของงานกันเถอะ!

โครงการสุดท้ายสำหรับโมดูล Java Syntax มาเขียน cryptanalyzer กันเถอะ

งานของคุณคือการเขียนโปรแกรมที่ทำงานร่วมกับรหัสซีซาร์

ให้ตัวอักษรเข้ารหัสของคุณประกอบด้วยตัวอักษรทั้งหมดของตัวอักษรภาษาอังกฤษรวมทั้งเครื่องหมายวรรคตอน (. , ” ” : - ! ? SPACE) หากคุณพบอักขระที่ไม่ได้เป็นส่วนหนึ่งของตัวอักษรแทนของเรา ให้ข้ามไป

ข้อกำหนดบังคับ

โปรแกรมควรมี 2 โหมด:

  1. การเข้ารหัส/ถอดรหัส โปรแกรมต้องเข้ารหัสและถอดรหัสข้อความโดยใช้คีย์การเข้ารหัสที่กำหนด

    โปรแกรมควรได้รับพาธไปยังไฟล์ข้อความที่มีข้อความต้นฉบับ และสร้างไฟล์ที่มีไซเฟอร์เท็กซ์ที่เกี่ยวข้อง

  2. การเข้ารหัสด้วยการโจมตีด้วยกำลังดุร้าย

    ในโหมดนี้ โปรแกรมจะต้องถอดรหัสข้อความเข้ารหัสที่อยู่ในไฟล์ข้อความอินพุต

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

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

ข้อกำหนดเพิ่มเติม (ทางเลือก)

1. การวิเคราะห์ด้วยการเข้ารหัสโดยการวิเคราะห์ทางสถิติ

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

2. ส่วนติดต่อผู้ใช้

สร้างกล่องโต้ตอบสำหรับการโต้ตอบกับผู้ใช้ตามดุลยพินิจของคุณ หากต้องการ คุณสามารถใช้เฟรมเวิร์กกราฟิก Swing และ JavaFX

อัปโหลดโซลูชันที่เสร็จสมบูรณ์ของคุณไปยังที่เก็บ Git สาธารณะ

โครงการจะได้รับการตรวจสอบเมื่อกลุ่มดำเนินการผ่าน