สิ่งที่ฉันสงสัยคือสามารถทำได้ในทิศทางอื่นหรือไม่เพื่อให้ได้ความยาวของข้อมูลข้อความธรรมดาดั้งเดิมที่กำหนดให้เป็นไซเฟอร์เท็กซ์
RC5 เป็นรหัสบล็อก สิ่งที่คุณถามเกี่ยวกับโหมดการเข้ารหัสบล็อก (และการเติมข้อมูลที่ใช้งานนั้นใช้); มีข้อมูลไม่เพียงพอที่จะตอบคำถามเฉพาะของคุณ แต่ฉันเดาได้
"การเข้ารหัสแบบบล็อก" เป็นการแปลงกลับจากบิตสตริง n บิต (ในกรณีนี้ $n=64$) เป็นบิตสตริง n บิต สิ่งที่ "โหมดการเข้ารหัสบล็อก" ทำก็คือ "การเข้ารหัสบล็อก" และใช้ในลักษณะที่จะทำให้เกิดการดำเนินการที่เป็นประโยชน์โดยทั่วไปมากขึ้น เช่น การเข้ารหัสข้อความธรรมดาที่มีความยาวตามอำเภอใจ
เมื่อมองไปที่โค้ด ดูเหมือนว่าโค้ดจะใช้ "โหมด ECB" เพื่อเข้ารหัสสตริง (ซึ่งโดยทั่วไปเป็นตัวเลือกที่แย่ - แน่นอนว่านั่นไม่ใช่ปัญหาของคุณ) ด้วย "โหมด ECB" ตัวโหมดสามารถจัดการได้เฉพาะข้อความธรรมดาที่มีความยาวหลายเท่าของบล็อก (ในกรณีนี้คือ 16 ไบต์) เนื่องจากโดยทั่วไปเราต้องการจัดการข้อความธรรมดาที่มีความยาวตามอำเภอใจ สิ่งที่เราทำคือเพิ่ม "การเติม" นั่นคือสิ่งพิเศษบางอย่างในตอนท้ายเพื่อทำให้ความยาวคูณด้วยความยาว 16 ไบต์ (ซึ่งโหมดสามารถจัดการได้)
ช่องว่างภายในนี้ออกแบบมาเพื่อให้ลบช่องว่างในเวลาถอดรหัสได้ง่าย อย่างไรก็ตาม มีความเป็นไปได้หลายประการ และรหัสถอดรหัสที่คุณให้ไม่ได้บอกเราว่ากำลังใช้รหัสใดอยู่ ในโหมดที่ใช้บ่อยที่สุด ไบต์สุดท้ายใช้เพื่อระบุจำนวนของไบต์การเติมที่เพิ่มเข้ามา คุณอาจต้องการดูว่าเป็นเช่นนั้นหรือไม่ในตัวอย่างของคุณ