ฉันต้องการเข้ารหัสสตริงนี้ด้วยรหัสสาธารณะ โดยที่ข้อความผลลัพธ์คือ < 64 อักขระ
ที่จริงแล้ว ดูเหมือนว่าคุณสามารถทำได้ หากคุณลดความปลอดภัยลงเล็กน้อย
แนวทางหนึ่งที่จะใช้ ECIES ด้วยพูด P-192 (EC-Elgamal ก็ใช้ได้เหมือนกัน - ฉันคิดว่านี่เป็นแนวทางที่เหนือกว่า)
ในรูปแบบนี้ คีย์ส่วนตัวเป็นค่าสุ่ม $r$และคีย์สาธารณะคือค่า $P = rG$, ที่ไหน $G$ เป็นจุดกำเนิด ในการเข้ารหัส เราเลือกค่าแบบสุ่ม $s$และคำนวณทั้งสองอย่าง $sG$ และ $sP$; เราส่งจุด $sP$ (หรือในกรณีของคุณ ให้ใช้เพียงพิกัด x) ผ่าน Key Derivation Function ซึ่งสร้างคีย์ที่เราใช้ในการเข้ารหัสข้อความจริง ไซเฟอร์เท็กซ์ประกอบด้วยค่า $sG$ (ในกรณีของคุณ แค่พิกัด x) และการเข้ารหัสแบบสมมาตร
ทีนี้ ถ้าเราใช้เส้นโค้ง P-192 พิกัด x ของ $sG$ สามารถแสดงเป็น 192 บิต; โดยใช้ตัวอักษรที่เราได้รับ (ซึ่งมี 81 สัญลักษณ์) ซึ่งจะต้องใช้ 31 ตัวอักษร (เช่น โดยการแปลงค่าจาก 0 เป็น circa $2^{192}$ เข้าฐาน 81)
สำหรับการเข้ารหัสแบบสมมาตรของข้อความ เราสามารถใช้วิธีการเข้ารหัสแบบรักษารูปแบบ [1]; สิ่งนี้สามารถแปลงข้อความที่ประกอบด้วยตัวอักษร 81 สัญลักษณ์เป็นข้อความรหัสที่มีตัวอักษรและความยาวเท่ากัน
ดังนั้น การเข้ารหัส 31 สัญลักษณ์ (ที่ใหญ่ที่สุดที่คุณบอกว่าคุณสนใจ) จะเข้ารหัสเป็นข้อความ 31+31 = 62 สัญลักษณ์ - ภายในข้อกำหนดของคุณ
ค่ารักษาความปลอดภัย:
P-192 มี "ความปลอดภัย 96 บิต"; ซึ่งค่อนข้างน้อยกว่าที่เราใช้ตามปกติ อย่างไรก็ตาม ก็ยังค่อนข้างดี
เรารั่วไหลของความยาวของข้อความ (เนื่องจากวิธีการเข้ารหัสที่รักษารูปแบบจะรักษาความยาวไว้) หากเป็นข้อกำหนดเพิ่มเติม คุณสามารถแพดข้อความเป็น 32 ไบต์ได้เสมอ (โดยอักขระตัวสุดท้ายระบุความยาวจริงของข้อความ) ด้วยวิธีนี้ เรายังคงปฏิบัติตามข้อกำหนดด้านความยาว
[1]: โดยปกติ เมื่อใช้ ECIES เราจะใช้การแปลงความสมบูรณ์อย่างชัดเจนในการเข้ารหัสแบบสมมาตร ฉันจะยืนยันว่าไม่จำเป็นในกรณีนี้ - การแก้ไขใด ๆ ของ FPE จะถอดรหัสเป็นบางอย่างแบบสุ่ม และฝ่ายตรงข้ามสามารถแทนที่ข้อความเข้ารหัสด้วยบางสิ่งที่ถอดรหัสเป็นบางอย่างแบบสุ่ม (โดยง่ายในการเลือกข้อความธรรมดาแบบสุ่มและเข้ารหัสมัน ด้วยรหัสสาธารณะ)