คำถามติดแท็ก cryptography

สำหรับความท้าทายที่เกี่ยวข้องกับการเข้ารหัส: การเข้ารหัสหรือการถอดรหัส

4
XORyption ที่มีเล่ห์เหลี่ยม
เขียนโปรแกรมหรือฟังก์ชั่น (หรือชุดของโปรแกรม / ฟังก์ชั่น) เพื่อเข้ารหัสและถอดรหัสข้อมูลตามข้อกำหนดต่อไปนี้: การเข้ารหัสลับ คำนวณแฮช XOR ของอินพุตโดย XOR-ing ทุกไบต์พร้อม ๆ กัน แฮคเกอร์ทุกไบต์ของอินพุทโดยแฮชนี้ เลื่อนผลลัพธ์ไปทางซ้ายสี่บิต วางด้านซ้ายด้วยแฮชสี่บิตแรกของแฮช วางด้านขวาด้วยแฮช XOR สี่บิตสุดท้าย ตัวอย่าง อินพุตที่ได้รับ: "G0lf"( 0x47306C66) คำนวณแฮช XOR: 0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D แฮคเกอร์ทุกไบต์โดยแฮ: 0x3A4D111B ผลลัพธ์ที่คาดหวัง (หลังเปลี่ยนและเบาะ): "s¤Ñ\x11½"( 0x73A4D111BD) กฎระเบียบ โปรแกรม / ฟังก์ชั่นของคุณสามารถอินพุต / เอาต์พุตชนิดใดก็ได้ที่เหมาะสมกับภาษากอล์ฟที่คุณเลือก(String, Byte Array, ฯลฯ )ตราบใดที่อินพุต …

8
ใช้ S-box ของ Rijndael
S-box ของ Rijndaelเป็นการดำเนินการที่ใช้บ่อยในการเข้ารหัสAESและถอดรหัส โดยทั่วไปแล้วจะใช้งานเป็นตารางค้นหาขนาด 256 ไบต์ เร็วมาก แต่หมายความว่าคุณต้องระบุตารางการค้นหาขนาด 256- ไบต์ในรหัสของคุณ ฉันเดิมพันคนในฝูงชนนี้สามารถทำได้ด้วยรหัสน้อยลงเนื่องจากโครงสร้างทางคณิตศาสตร์พื้นฐาน เขียนฟังก์ชั่นในภาษาที่คุณชื่นชอบซึ่งใช้ S-box ของ Rijndael รหัสที่สั้นที่สุดชนะ

3
ตัวเลขของเบคอน: คำนำเกี่ยวกับซูรินาเม
ลูกหมูตัวเล็กนี้ออกสู่ตลาดลูกหมูตัวเล็กนี้เขียนโค้ดบางส่วน ... เดี๋ยวก่อนเราไม่ได้พูดถึงเบคอนนั่นเรากำลังพูดถึงเซอร์ฟรานซิสเบคอน! โดยเฉพาะรหัสตัวเลขเบคอนได้คิดค้นขึ้นในปลายปี 1500เพื่อเป็นวิธีการซ่อนข้อความภายในข้อความอื่นซึ่งเป็นวิธีการของซูรินาเม รหัสลับทำงานโดยการซ่อนข้อความในการนำเสนอข้อความแทนที่จะเป็นเนื้อหา ขั้นแรกตัวอักษรของข้อความของคุณจะถูกเข้ารหัสเป็นไบนารี่ (จาก 0 ถึง 25) ดังนี้: หมายเหตุ: โปรดใช้การเข้ารหัสต่อไปนี้ในรหัสของคุณและไม่ต้องกังวลเกี่ยวกับตัวเลขช่องว่างหรือสัญลักษณ์อื่น ๆ ในอินพุตแม้ว่าฉันอาจจะคิดโบนัสบางอย่างสำหรับผู้ที่รวมอักขระเหล่านี้ไว้ในการเข้ารหัส หากคุณรวมสัญลักษณ์อื่น ๆ ตัวอักษรจะต้องคงช่องว่าง 0-25 ในการเข้ารหัส Letter Encoding A AAAAA B AAAAB C AAABA D AAABB E AABAA F AABAB G AABBA H AABBB I ABAAA J ABAAB K ABABA L ABABB M ABBAA N …

9
เลื่อน Caesars เลื่อน
ลักษณะ Caesar Shift เป็นรหัสตัวเลขแบบ monoalphabetic ที่ง่ายมากโดยที่ตัวอักษรแต่ละตัวจะถูกแทนที่ด้วยตัวอักษรหนึ่งตัวตามด้วยตัวอักษร ตัวอย่าง: Hello world! -> IFMMP XPSME! ( IBSLR, EGUFV!เป็นผลลัพธ์สำหรับความท้าทายที่แท้จริงนี่เป็นตัวอย่างของการเลื่อนที่ 1) อย่างที่คุณเห็นระยะห่างและเครื่องหมายวรรคตอนยังคงไม่ได้รับผลกระทบ อย่างไรก็ตามเพื่อป้องกันการเดาข้อความตัวอักษรทั้งหมดจะเป็นตัวพิมพ์ใหญ่ เมื่อขยับตัวอักษรกลับข้อความจะถูกถอดรหัสสะดวก แต่ยังง่ายต่อการถอดรหัสโดยบุคคลอื่นที่ไม่ควรรู้ว่าข้อความนั้นหมายถึงอะไร ดังนั้นเราจะช่วย Caesar นิดหน่อยโดยใช้รูปแบบขั้นสูงของรหัสของเขา: Self-shifting Caesar Shift ! ท้าทาย งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ให้สายอักขระเข้ารหัสเอาท์พุทสตริงเข้ารหัสที่สอดคล้องกับอินพุต Caesar Shift ขั้นสูงทำงานได้ดังนี้: 1. Compute letter differences of all adjacent letters: 1.1. Letter difference is computed like this: Position of 2nd …

3
ผู้ประกอบการ Bitwise ใน Brainfuck
งานของคุณคือสร้างโปรแกรม brainfuck หนึ่งโปรแกรมสำหรับตัวดำเนินการไบนารีต่อไปนี้ แต่ละโปรแกรมควรใช้หนึ่งหรือสองหมายเลข 8 บิต (A และ B) จากอินพุตและคำนวณการดำเนินการที่ระบุ: A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A คุณไม่ต้องใช้ทั้งหมด 5 คะแนนคำนวณโดย: #totalCharacters + {4000 * #problemsNotCompleted} คะแนนที่ถูกต้องคือจากศูนย์ (ดีที่สุด) ถึง 20,000 (ไม่เสร็จสมบูรณ์) ฉันไม่สนใจว่าคุณจะเก็บผลลัพธ์ไว้ที่ใดหรือคุณเก็บข้อมูลไว้หรือไม่ สมมติว่าเซลล์ 8 บิตและเซลล์ว่างมากเท่าที่คุณต้องการไปทางขวาเท่านั้น คุณอาจคิดว่าตัวเลขนั้นอยู่ในตำแหน่งหน่วยความจำที่เหมาะกับคุณที่สุดอยู่แล้วดังนั้นคุณไม่ต้องกังวลกับการทำงานของ IO
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

12
ปรับใช้ One-Time Pad
พื้นหลัง แผ่นเพียงครั้งเดียวเป็นรูปแบบของการเข้ารหัสที่พิสูจน์แล้วว่าเป็นไปไม่ได้ที่จะถอดรหัสหากใช้อย่างเหมาะสม การเข้ารหัสจะดำเนินการโดยใช้ข้อความธรรมดา (ประกอบด้วยตัวอักษร AZ เท่านั้น) และสร้างสตริงแบบสุ่มที่ความยาวเท่ากัน (รวมถึงตัวอักษรเท่านั้น) สายนี้ทำหน้าที่เป็นกุญแจสำคัญ อักขระแต่ละตัวในข้อความธรรมดาจะถูกจับคู่กับอักขระที่สอดคล้องกันในคีย์ ciphertext ถูกคำนวณดังนี้: สำหรับแต่ละคู่อักขระทั้งสองจะถูกแปลงเป็นตัวเลข (A = 0, B = 1, ... Z = 25) ตัวเลขทั้งสองจะถูกเพิ่มแบบโมดูโล 26 หมายเลขนี้คือการแปลงกลับไปเป็นตัวละคร การถอดรหัสเป็นสิ่งที่ตรงกันข้าม อักขระใน ciphertext และคีย์ถูกจับคู่และแปลงเป็นตัวเลข คีย์จะถูกลบออกจาก ciphertext modulo 26 และผลลัพธ์จะถูกแปลงกลับไปเป็นอักขระ AZ ความท้าทาย ความท้าทายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดที่สามารถเข้ารหัสและถอดรหัสแผ่นเพียงครั้งเดียว ในบรรทัดแรกของอินพุต (ถึง STDIN) จะมีคำว่า "ENCRYPT" หรือคำว่า "DECRYPT" หากคำนั้นถูกเข้ารหัสแล้วบรรทัดถัดไปจะเป็นข้อความธรรมดา โปรแกรมของคุณควรเอาต์พุตสองบรรทัด (ไปยัง STDOUT), อันแรกคือกุญแจ, …

2
ตีความ Kipple!
บทนำ Kippleเป็นภาษาการเขียนโปรแกรมแบบกองซ้อนซึ่งเป็นความลับที่คิดค้นโดย Rune Berg ในเดือนมีนาคม 2003 Kipple มี 27 กอง 4 ตัวดำเนินการและโครงสร้างการควบคุม สแต็ค สแต็กถูกตั้งชื่อa- zและมีจำนวนเต็ม 32 บิต นอกจากนี้ยังมีสแต็กพิเศษ@เพื่อให้หมายเลขเอาต์พุตสะดวกยิ่งขึ้น เมื่อตัวเลขถูกส่งเข้าสู่@ค่า ASCII ของตัวเลขนั้นจะถูกผลักเข้าไปแทน (ตัวอย่างเช่นหากคุณกด 12 ถึง@จะได้ 49 และ 50 @แทน) อินพุตถูกส่งไปยังอินพุตสแต็กiก่อนที่โปรแกรมจะถูกดำเนินการ ล่ามจะถามหาค่าที่จะจัดเก็บiก่อนดำเนินการ หลังจากการดำเนินการเสร็จสิ้นสิ่งใดในเอาท์พุทสแต็คoจะถูกตอกไปยังเอาท์พุทเป็นตัวอักษร ASCII เนื่องจากนี่เป็นเพียงกลไก IO ของ Kipple เท่านั้นการโต้ตอบกับโปรแกรม Kipple จึงเป็นไปไม่ได้ ผู้ประกอบการ ตัวถูกดำเนินการเป็นทั้งตัวระบุสแต็กหรือจำนวนเต็ม 32 บิตลงนาม กด: >หรือ< ไวยากรณ์: Operand>StackIndentifierหรือStackIndentifier<Operand ตัวดำเนินการพุชนำตัวถูกดำเนินการไปทางซ้ายแล้วผลักไปยังสแต็กที่ระบุ ตัวอย่างเช่น12>aจะส่งค่า 12 …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

2
Cryptic Kicker //
Cryptic Kicker วิธีการเข้ารหัสข้อความธรรมดา แต่ไม่ปลอดภัยคือการดัดแปลงตัวอักษรของตัวอักษร กล่าวอีกนัยหนึ่งตัวอักษรแต่ละตัวจะถูกแทนที่ด้วยตัวอักษรอื่นอย่างสม่ำเสมอ เพื่อให้แน่ใจว่าการเข้ารหัสสามารถย้อนกลับได้ไม่มีการเปลี่ยนตัวอักษรสองตัวด้วยตัวอักษรเดียวกัน งานของคุณคือถอดรหัสข้อความที่เข้ารหัสหลายบรรทัดโดยสมมติว่าแต่ละบรรทัดใช้ชุดการแทนที่ที่แตกต่างกันและคำทั้งหมดในข้อความที่ถอดรหัสมาจากพจนานุกรมของคำที่รู้จัก อินพุต ข้อมูลที่ป้อนประกอบด้วยคำตัวพิมพ์เล็กตามลำดับตัวอักษร คำเหล่านี้ประกอบด้วยพจนานุกรมของคำที่อาจปรากฏในข้อความถอดรหัส การติดตามพจนานุกรมจะมีอินพุตหลายบรรทัด แต่ละบรรทัดถูกเข้ารหัสตามที่อธิบายไว้ข้างต้น พจนานุกรมไม่เกิน 1,000 คำ คำไม่เกิน 16 ตัวอักษร บรรทัดที่เข้ารหัสลับมีตัวอักษรตัวพิมพ์เล็กและช่องว่างเท่านั้นและมีความยาวไม่เกิน 80 อักขระ เอาท์พุต ถอดรหัสแต่ละบรรทัดและพิมพ์ไปยังเอาต์พุตมาตรฐาน หากมีหลายวิธีการแก้ปัญหาใด ๆ ที่จะทำ หากไม่มีวิธีแก้ไขให้แทนที่ตัวอักษรทุกตัวด้วยเครื่องหมายดอกจัน ตัวอย่างอินพุต and dick jane puff spot yertle bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn xxxx yyy zzzz www yyyy aaa bbbb …

20
การเข้ารหัสแฮชกอล์ฟ (โจร)
การประกวดนี้จบแล้ว ไม่มีคำตอบที่สามารถถอดรหัสได้ในการท้าทายของตำรวจ ด้ายคู่หูของCryptographic hash golf เพื่อเป็นการเตือนความจำนี่คือกฎสำหรับโจรจากการท้าทายหลัก: งาน แตกใด ๆ ของตำรวจส่งโดยโพสต์ต่อไปนี้ในโจรหัวข้อ: สองข้อความMและNในฉันเช่นว่า H (M) = H (N)และM ≠ N เกณฑ์การให้คะแนน การแคร็กการส่งตำรวจแต่ละครั้งทำให้คุณได้หนึ่งจุด โจรที่มีคะแนนมากที่สุดเป็นผู้ชนะ ในกรณีของการผูกเน็คไทโจรที่ถูกผูกไว้จะทำให้การยอมแพ้ที่ยาวนานที่สุดชนะ กฎเพิ่มเติม การส่งตำรวจทุกครั้งสามารถถอดรหัสได้หนึ่งครั้งเท่านั้น หากการส่งตำรวจขึ้นอยู่กับพฤติกรรมที่กำหนดหรือไม่ได้กำหนดไว้คุณจะต้องพบกับรอยแตกที่ทำงานได้บนเครื่องของคุณ การแตกร้าวแต่ละครั้งเป็นของคำตอบแยกกันในเธรดของโจร การโพสต์ความพยายามในการแคร็กที่ไม่ถูกต้องห้ามคุณจากการแคร็กการส่งนั้นเป็นเวลา 30 นาที คุณไม่สามารถทำการส่งของคุณเองได้ ตัวอย่าง Python 2.7, 22 ไบต์โดย user8675309 1 และ 18 ลีดเดอร์บอร์ด eBusiness: 3 รอยแตก 393 ไบต์ Martin Büttner: 3 รอยร้าว 299 …

1
ติดตั้งเลขทศนิยมแบบไบนารีของ IEEE 754 64- บิตผ่านการจัดการจำนวนเต็ม
(ฉันติดแท็กคำถาม "C" ในขณะนั้น แต่ถ้าคุณรู้ภาษาอื่นที่สนับสนุนสหภาพคุณสามารถใช้มันได้) งานของคุณคือการสร้างตัวดำเนินการทางคณิตศาสตร์สี่มาตรฐาน+ - * /สำหรับโครงสร้างต่อไปนี้: union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } เช่นว่าการดำเนินการของตัวเองเท่านั้นที่จะจัดการหรือเข้าถึงส่วนจำนวนเต็ม (ดังนั้นจึงไม่มีการเปรียบเทียบกับสองครั้งตลอดเวลาในระหว่างการดำเนินการอย่างใดอย่างหนึ่ง) และผลที่ได้คือเหมือนกัน (หรือเทียบเท่าตามหน้าที่ในกรณีของผลลัพธ์ที่ไม่ใช่ตัวเลขเช่นNaN) ราวกับว่าการดำเนินการทางคณิตศาสตร์ที่สอดคล้องกันถูกนำไปใช้โดยตรงกับdoubleแทน คุณอาจเลือกส่วนจำนวนเต็มเพื่อจัดการแม้กระทั่งการใช้ส่วนต่าง ๆ ในตัวดำเนินการที่แตกต่างกัน (คุณสามารถเลือกที่จะลบ "unsigned" ออกจากฟิลด์ใด ๆ ในสหภาพได้แม้ว่าฉันไม่แน่ใจว่าต้องการทำเช่นนั้นหรือไม่) คะแนนของคุณคือผลรวมของความยาวของรหัสเป็นอักขระสำหรับผู้ให้บริการแต่ละราย คะแนนต่ำสุดชนะ สำหรับพวกเราที่ไม่คุ้นเคยกับข้อกำหนด IEEE 754 นี่เป็นบทความเกี่ยวกับเรื่องนี้ใน Wikipedia การแก้ไข: 03-06 …

1
ทำลายตัวเลขที่หัก
ฉันได้ออกแบบตัวสร้างแบบสุ่มอย่างง่ายที่วนสองตัวเลขด้วยวิธีที่วุ่นวายโดยใช้วิธีการคูณและโมดูลัส มันใช้งานได้ดีสำหรับการที่ ถ้าฉันจะใช้มันเป็นเครื่องกำเนิดไฟฟ้ารหัส แต่มันจะมีความเสี่ยงต่อการโจมตีธรรมดาที่รู้จักเนื่องจากผู้โจมตีสามารถย้อนกลับวิศวกรเมล็ดจากชุดของตัวเลขสุ่มในลักษณะที่มีประสิทธิภาพในการคำนวณ หากต้องการพิสูจน์ตัวเลขที่เสียหายให้ค้นหาคู่ค่าทางกฎหมายที่สร้างค่า 7 ศูนย์ในหนึ่งแถวในช่วง [0; 255] โดยใช้พลังงานเพียงเล็กน้อยเวลา CPU ฯลฯ เท่าที่จะทำได้ นี่คือตัวสร้างแบบสุ่มที่เขียนใน JavaScript: function seed(state1,state2){ //Constants var mod1=4294967087 var mul1=65539 var mod2=4294965887 var mul2=65537 function random(limit){ //Cycle each state variable 1 step state1=(state1*mul1)%mod1 state2=(state2*mul2)%mod2 //Return a random variable return (state1+state2)%limit } //Return the random function return random } …

9
ถอดรหัสข้อความที่ซ่อนอยู่!
บทนำ อยู่มาวันหนึ่งคุณแค่ผ่อนคลายในสำนักงานของคุณในซีไอเอเมื่อจู่ ๆ คุณเห็นการแจ้งเตือนบนคอมพิวเตอร์ของคุณ โปรแกรมของคุณได้ดักจับข้อความที่เข้ารหัสหลายร้อยข้อความ! การตรวจสอบอย่างรวดเร็วเปิดเผยกฎสำหรับการเข้ารหัส แต่คุณต้องการโปรแกรมเพื่อถอดรหัสอย่างรวดเร็ว ท้าทาย คุณจะได้รับรายการสตริงคั่นด้วยเครื่องหมายจุลภาค แต่ละสตริงจะมี: ส่วนหนึ่งของข้อความที่เข้ารหัส มันเป็นส่วนหนึ่งของข้อความที่เข้ารหัสถ้ามันเป็นไม่ได้a=bในรูปแบบ หมายเหตุว่ามันเป็นab=cส่วนหนึ่งของข้อความถ้ามันเป็น เพิ่มสตริงนี้ไปยังข้อความที่เข้ารหัส ส่วนหนึ่งของรูปแบบการเข้ารหัส a=bนี้จะเป็นในรูปแบบของ นั่นหมายความว่า a's ทั้งหมดในข้อความจะต้องถูกแทนที่ด้วย b's โปรดทราบว่าอาจเป็นได้a==ซึ่งหมายความว่าทุกอย่างของ `s จะต้องถูกแทนที่ด้วย = 's โปรแกรมของคุณจะต้องส่งออกข้อความถอดรหัสโดยใช้รูปแบบที่พบ ข้อมูลอื่น ๆ : ข้อมูลที่คุณป้อนจะมีเครื่องหมายจุลภาคสำหรับการแยกสตริงเท่านั้น มันอาจมีตัวละครอื่น ๆ เช่น! 1 # ฯลฯ มันจะไม่มีตัวอักษรตัวพิมพ์ใหญ่ บิตของข้อมูลการถอดรหัสไม่ได้ถอดรหัสซึ่งกันและกัน เฉพาะข้อความที่ได้รับผลกระทบจากข้อมูลการถอดรหัส จะมีการเปลี่ยนหนึ่งตัวสำหรับแต่ละอักขระเช่นไม่"io,"i=u","i=g" ตัวอย่าง การป้อนข้อมูล:"ta","y=s","y","a=e","b=t","b"," ","j","j=1" เอาท์พุท:test 1 การป้อนข้อมูล:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b==" เอาท์พุท:potatoes=life การป้อนข้อมูล:"p","=","==n","ot","p=a","hiz","i=e","z=r" เอาท์พุท:another นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!

5
การเข้ารหัส CipherSaber
ใช้โปรแกรมเข้ารหัสCipherSaberดังที่อธิบายไว้ด้านล่าง แนวทาง: รายการที่เล็กที่สุดเป็นไบต์ชนะ อย่างไรก็ตามในการออกจากบรรทัดฐานโค้ดกอล์ฟคุณสามารถโพสต์รายการที่น่าสนใจแม้ว่าพวกเขาจะไม่ได้รายการกอล์ฟที่ร้ายแรง โดยทั่วไปแล้วรายการจะเป็นโปรแกรมที่ใช้ข้อความธรรมดาจากอินพุตมาตรฐานและเขียน ciphertext ไปยังเอาต์พุตมาตรฐานโดยมีคีย์ที่ระบุ (โดยผู้ใช้) ในบางวิธีที่คุณต้องการ อย่างไรก็ตามหากคุณต้องการใช้ขั้นตอนนี้เป็นขั้นตอนก็ถือว่าใช้ได้เช่นกัน IV จะต้องมาจากเครื่องกำเนิดหมายเลขเทียมแบบเข้ารหัสที่มีความปลอดภัย หากภาษาของคุณไม่รองรับให้เลือกภาษาอื่น ;-) กรุณาอย่าใช้ไลบรารีที่เฉพาะเจาะจงเข้ารหัสลับการเรียกระบบหรือคำแนะนำใด ๆ (นอกเหนือจาก PRNG ตามที่ระบุไว้ข้างต้น) แน่นอนว่าการใช้งานระดับบิตเรตระดับต่ำทั่วไปนั้นโอเค CipherSaber เป็นตัวแปรของ RC4 / Arcfour ดังนั้นฉันจะเริ่มต้นด้วยการอธิบายหลังจากนั้นการเปลี่ยนแปลง CipherSaber จะเป็นเช่นนั้น 0. RC4 / Arcfour Arcfour มีการระบุอย่างสมบูรณ์ที่อื่นแต่เพื่อความสมบูรณ์ฉันจะอธิบายที่นี่ (ในกรณีที่มีความแตกต่างระหว่างร่างอินเทอร์เน็ตและคำอธิบายนี้อดีตเป็นบรรทัดฐาน) การตั้งค่าคีย์ ตั้งค่าสองอาร์เรย์SและS2ทั้งความยาว 256 โดยที่k_1เป็นไบต์แรกของคีย์และk_nเป็นตัวสุดท้าย S = [0, ..., 255] S2 = [k_1, ..., k_n, k_1, …

6
แก้ปัญหาการเปลี่ยนรูป Burrows-Wheeler
บทนำ ในการท้าทายนี้คุณจะได้รับการแก้ไข Burrows-Wheeler ในแนวทแยง นี่คือภาพรวมทั่วไปของการเปลี่ยนรูป Burrows-Wheeler ในแนวทแยง ในการเข้ารหัสข้อความคุณต้องรับประกันว่าข้อความนั้นยาวแปลก (เช่น 5, 7, 9 ฯลฯ ) จากนั้นคุณสร้างกริดnโดยnที่nความยาวของข้อความอยู่ที่ไหน แถวแรกคือข้อความต้นฉบับ แต่ละแถวหลังจากนั้นคือแถวด้านบน แต่เลื่อนไปทางซ้าย 1 อักขระโดยที่อักขระตัวแรกเลื่อนไปทางด้านหลัง ตัวอย่างเช่น: Hello World ello WorldH llo WorldHe lo WorldHel o WorldHell WorldHello WorldHello orldHello W rldHello Wo ldHello Wor dHello Worl จากนั้นคุณนำตัวอักษรแต่ละตัวไปตามแนวทแยงมุมของ NW ถึง SE และใส่ลงในสตริงใหม่: Hello World H ello …

2
ถอดรหัสโดยการวิเคราะห์รูปแบบ
คุณได้รับสตริงเข้ารหัสเข้ารหัสโดยใช้รหัสแทนง่ายมาก ปัญหา คุณไม่ทราบว่าตัวเลขคืออะไร แต่คุณรู้ว่า ciphertext เป็นภาษาอังกฤษและตัวอักษรที่พบบ่อยที่สุดในภาษาอังกฤษคือetaoinshrdlucmfwypvbgkqjxzตามลำดับ อักขระที่อนุญาตเท่านั้นคือตัวอักษรตัวใหญ่และช่องว่าง คุณสามารถทำการวิเคราะห์ขั้นพื้นฐาน - เริ่มจากตัวอักษรเดี่ยว แต่คุณสามารถย้ายไปยังการวิเคราะห์หลายตัวอักษรที่ซับซ้อนมากขึ้นตัวอย่างเช่น U มักตามหลังคำถาม Q เสมอและมีเพียงบางตัวอักษรเท่านั้นที่สามารถมาได้สองครั้งติดต่อกัน ตัวอย่าง clear : SUBMARINE TO ATTACK THE DOVER WAREHOUSE AND PORT ON TUESDAY SUNRISE cipher: ZOQ DUPAEYSRYDSSDXVYSHEYNRBEUYLDUEHROZEYDANYKRUSYRAYSOEZNDMYZOAUPZE clear : THE QUICK BROWN FOX BEING QUITE FAST JUMPED OVER THE LAZY DOG QUITE NICELY cipher: TNAEPDHIGEMZQJLEVQBEMAHL …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.