โดยทั่วไป เราต้องการให้ผลลัพธ์การเข้ารหัสดูสุ่ม ดังนั้นฉันสงสัยว่ามีฟังก์ชันการเข้ารหัสแบบที่คุณต้องการอยู่จริงหรือไม่
แต่ฉันคิดว่าคุณสามารถบรรลุเป้าหมายได้ด้วยกระบวนการสองขั้นตอน
- เข้ารหัสข้อมูลของคุณโดยใช้ AES โดยใช้โหมดที่เหมาะสม เช่น CBC หรือ GCM ขั้นตอนนี้รับผิดชอบด้านความปลอดภัย
- แปลงบล็อกข้อความรหัส AES แต่ละบล็อกเป็นรูปแบบที่คุณต้องการ ที่นี่คุณสามารถใช้อัลกอริทึมใดก็ได้ที่แปลงจำนวนเต็ม 128 บิตเป็นรูปแบบเวกเตอร์ที่เหมาะกับเป้าหมายของคุณ มันอาจจะสะดวกถ้าสิ่งนี้สามารถจัดการบล็อก 128 บิตได้ แต่ถ้ามันใหญ่เกินไป คุณสามารถแบ่งบล็อกออกเป็น (เช่น) สี่บล็อก 32 บิต และจัดการแต่ละบล็อกที่เล็กกว่าแยกกัน จากนั้นผู้รับจะแปลงเวกเตอร์แต่ละตัวกลับไปเป็นบล็อก 32 บิต และเชื่อมบล็อก 32 บิตสี่ชุดต่อเนื่องกันเพื่อสร้างบล็อกข้อความเข้ารหัส AES 128 บิตดั้งเดิม และป้อนบล็อกนั้นลงในอัลกอริทึมการถอดรหัส AES ที่เหมาะสม ขั้นตอนนี้จะแปลงข้อมูลเป็นรูปแบบที่ต้องการเท่านั้น และไม่ได้มีวัตถุประสงค์เพื่อเพิ่มความปลอดภัยใดๆ
ตัวอย่างของอัลกอริทึมขั้นที่ 2 สมมติว่าเราต้องการให้ผลลัพธ์เป็นค่า ย ในพหุนาม y = x2 + 3. ดังนั้นเราจึงใช้บล็อกข้อความรหัส AES 128 บิตของเรา ค เป็นจำนวนเต็ม ให้คำนวณ o = ค2 + 3จากนั้นใช้ โอ เป็นผลลัพธ์สุดท้ายของเรา (ฉันสงสัยว่าตัวอย่างนี้ไม่ใช่สิ่งที่คุณตั้งเป้าไว้ แต่หวังว่าจะชี้ให้คุณเห็นในทิศทางที่เหมาะสม)
หมายเหตุ: ตรวจสอบให้แน่ใจว่าอัลกอริทึมการแปลงของคุณกลับด้านได้ โอ สามารถแปลงกลับเป็นต้นฉบับได้โดยไม่ซ้ำกัน ค) หรือการถอดรหัสจะทำงานไม่ถูกต้อง