ดังนั้น จะดีไหมถ้าฉันใช้ SHA256 สร้างคีย์ 256 บิตแทนที่จะแยกสตริงฐานสิบหกของคีย์ออกเป็น 2 ส่วนเท่าๆ กัน และใช้ส่วนแรกเป็น IV ในการเข้ารหัส AES 256 บิต
ไม่ มีวิธีที่ดีกว่า
ก่อนอื่น เมื่อคุณสร้างคีย์ คุณต้องมีตัวสร้างตัวเลขสุ่มที่ปลอดภัยด้วยการเข้ารหัส ถ้าคุณ ได้รับมา คีย์จากความลับหลัก - บางครั้งเรียกว่าเมล็ด - คุณต้องมีฟังก์ชันการสืบทอดคีย์หรือ KDF ในกรณีหลัง คุณสามารถเช่น ใช้ HKDF กับแฮชที่ดี เช่น SHA-256 โดยหลักการแล้วคุณสามารถสร้างได้เช่น เอาต์พุต 384 บิตโดยใช้ HKDF - แม้ว่าจะใช้ SHA-256 แต่ฉันไม่คิดว่าเป็นความคิดที่ดีเพราะส่วนต่อไปนี้ของคำตอบ
ประการที่สอง การใช้ชุดคีย์ / IV ซ้ำไม่ใช่ความคิดที่ดี ขึ้นอยู่กับโหมดและข้อความที่คุณอาจรั่วไหลเพียงข้อมูลบางส่วนหรือข้อความทั้งหมด
โดยทั่วไป คุณสามารถใช้ศูนย์ IV ทั้งหมดได้หากคีย์ถูกสร้างแบบสุ่มสำหรับแต่ละข้อความ นั่นจะดีกว่าการนำส่วนหนึ่งของคีย์กลับมาใช้ใหม่ ตามที่ระบุไว้ โดยทั่วไปแล้ว IV จะไม่ถือว่าเป็นความลับ ดังนั้นหากคุณใช้ข้อมูลสำคัญเนื่องจากการใช้งาน IV อาจทำให้ข้อมูลรั่วไหลได้'
หากคุณต้องการเข้ารหัสข้อความหลายข้อความด้วยคีย์เดียวกัน คุณสามารถใช้ a สังเคราะห์ IV หรือ SIV วิธีนี้จะทำให้ข้อมูลรั่วไหลได้ก็ต่อเมื่อข้อความเหมือนกันทุกประการ โดยต้องแลกกับประสิทธิภาพบางอย่าง เนื่องจากโหมด SIV เป็นแบบมัลติพาส (ข้อความต้องได้รับการประมวลผลสองครั้ง)
โดยทั่วไปคุณควรใช้ IV แบบสุ่มและส่งด้วยไซเฟอร์เท็กซ์ ไม่ชัดเจนจากคำถามว่าได้รับการพิจารณาแล้วหรือไม่ มันจะเป็นวิธีทั่วไปในการจัดการกับรุ่นที่สี่
สุดท้าย คีย์ไม่ใช่ตัวอักษรผสมตัวเลข ประกอบด้วยบิต ทุกครั้งที่คีย์ถูกแปลเป็นข้อความ คุณกำลังเปิดปัญหาด้านความปลอดภัย อย่าทำเช่นนั้น: เก็บคีย์ไบนารีไว้ฉันควรใช้ AES-128 กับคีย์สุ่มทั้งหมดและใช้อีก 128 บิตสำหรับ IV แทนที่จะเปลี่ยนกลับไปใช้เลขฐานสิบหก
เลขฐานสิบหกมีประโยชน์สำหรับการบริโภคของมนุษย์เท่านั้น เช่น ระหว่างการทดสอบหรือการดีบักเมื่อพูดถึงคีย์ลับ