Vigenere ตัวเลขเป็นตัวเลข polyalphabetic ง่ายๆที่พื้นใช้หนึ่งยันต์จักรพรรดิหลายตามคีย์ โดยพื้นฐานแล้วตัวอักษรในปุ่มจะระบุว่าจะใช้ตัวอักษรใดในการเลื่อน ด้วยเหตุนี้จึงมีเครื่องมือง่าย ๆ ที่เรียกว่าVigenère square:
ที่นี่แต่ละแถวเป็นตัวอักษรแยกเริ่มต้นด้วยตัวอักษรที่เกี่ยวข้องของคีย์ คอลัมน์จะถูกใช้เพื่อกำหนดตัวอักษรที่เข้ารหัส การถอดรหัสใช้งานได้เหมือนกันมากในทางกลับกันเท่านั้น
CODEGOLF
สมมติว่าเราต้องการที่จะเข้ารหัสสตริง เรายังต้องการกุญแจ FOOBAR
ในกรณีนี้ที่สำคัญจะต้องเป็น FOOBARFO
เมื่อที่สำคัญคือสั้นกว่าธรรมดาที่เราขยายได้โดยการทำซ้ำจึงเป็นกุญแจสำคัญที่เกิดขึ้นจริงที่เราใช้คือ ตอนนี้เราค้นหาตัวอักษรตัวแรกของกุญแจซึ่งก็คือF
การค้นหาตัวอักษร F
มันเริ่มต้นอาจจะแปลกใจกับ H
ตอนนี้เราได้พบกับคอลัมน์ที่มีอักษรตัวแรกของเท็กซ์และตัวอักษรที่เกิดขึ้นคือ สำหรับจดหมายที่สองที่เรามีเป็นตัวอักษรที่สำคัญและตัวอักษรข้อความธรรมดาที่เกิดขึ้นในO
อย่างต่อเนื่องวิธีการที่ในที่สุดเราก็จะได้รับC
HCRFGFQT
งาน
ตอนนี้งานของคุณคือการถอดรหัสข้อความให้รหัส อย่างไรก็ตามเนื่องจากเราเติบโตเกินกว่าศตวรรษที่ 16 และมีคอมพิวเตอร์อย่างน้อยเราควรสนับสนุนตัวอักษรขนาดใหญ่กว่าเล็กน้อย:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
การก่อสร้างจัตุรัสVigenèreยังคงเหมือนเดิมมากและศูนย์ยังคงทำงานในลักษณะเดียวกัน เป็นเพียงเล็กน้อย ... ไม่เต็มใจที่จะให้ที่นี่เต็ม
อินพุต
อินพุตได้รับจากอินพุตมาตรฐานเป็นข้อความสองบรรทัดแยกกันโดยแต่ละบรรทัดจะถูกยกเลิกโดยการขึ้นบรรทัดใหม่ บรรทัดแรกมีคีย์ในขณะที่บรรทัดที่สองประกอบด้วย ciphertext
เอาท์พุต
บรรทัดเดียวที่มีข้อความที่ถอดรหัส
สภาพการชนะ
เนื่องจากการเข้ารหัสบางครั้งถือเป็นอาวุธรหัสควรสั้นเพื่ออำนวยความสะดวกในการลักลอบขนง่าย ยิ่งสั้นยิ่งดีก็ยิ่งลดโอกาสในการค้นพบน้อยลง
ตัวอย่างอินพุต 1
Key
miQ2eEO
ตัวอย่างผลลัพธ์ 1
Message
ตัวอย่างอินพุต 2
ThisIsAKey
CoqKuGRUw29BiDTQmOpJFpBzlMMLiPb8alGruFbu
ตัวอย่างผลลัพธ์ 2
ThisWorksEquallyWellWithNumbers123894576
หนึ่งสัปดาห์ผ่านไป โซลูชันที่สั้นที่สุดได้รับการยอมรับแล้ว สำหรับผู้ที่สนใจในการแข่งขันของเราเรามีการส่งและความยาวต่อไปนี้:
130 - Python
146 - Haskell
195 - C
197 - C
267 - VB.NET
และโซลูชันของเราเองที่ไม่ได้ถูกจัดอันดับไว้กับที่อื่น
108 - Ruby
139 - PowerShell