โดยทั่วไปมีสองขั้นตอนในการนี้:
- เข้ารหัสข้อความเป็นไบต์ - โดยทั่วไปต้องมีการเข้ารหัสอักขระเช่นการเข้ารหัส UTF-8 หรือละติน
- เข้ารหัสไบต์เป็นจำนวนเต็ม - นี่คือ เป็นส่วนหนึ่งของ การดำเนินการเข้ารหัสใน RSA ตามที่ระบุไว้ใน PKCS#1 และดำเนินการโดยใช้ฟังก์ชันที่เรียกว่า OS2IP
ในกรณีของคุณ เห็นได้ชัดว่าข้อความถูกเข้ารหัสเป็นไบต์แล้ว ไฟล์ประกอบด้วยไบต์และคุณกำลังเปิดไฟล์เป็นไฟล์ไบนารี (b ในแฟล็ก rb)
OS2IP หมายถึงสตริงออคเต็ตเป็นจำนวนเต็มดั้งเดิม สตริงออคเต็ตไม่มีอะไรมากไปกว่าอาร์เรย์ไบต์ หากไบต์อยู่ในรูปแบบที่ถูกต้องแล้ว ก็เป็นเพียงคำถาม ล่าม ไบต์เป็นตัวเลข เนื่องจากคอมพิวเตอร์มักจะจัดการทุกอย่างเป็นเลขฐานสองอยู่ดี
ใน PKCS#1 ที่ใช้ RSA OS2IP นั้นไม่ได้ใช้โดยตรง: ขั้นแรกให้เติมช่องว่างที่เกี่ยวข้องกับความปลอดภัย ซึ่งจะเป็นช่องว่างภายในที่กำหนด PKCS#1 v1.5 หรือช่องว่างภายใน OAEP การเพิ่มช่องว่างภายในหมายความว่าจะมีการเพิ่มโอเวอร์เฮดในจำนวนที่ไม่สำคัญก่อนที่จะใช้ข้อความ จำนวนของข้อความธรรมดานั้นน้อยกว่าโมดูลัส RSA มาก
นี่เป็นเหตุผลหนึ่งที่ทำให้ไฟล์ไม่ได้รับการเข้ารหัสโดยใช้ RSA โดยตรง เหตุผลหลักอื่นๆ คือการเข้ารหัส RSA และโดยเฉพาะอย่างยิ่งการดำเนินการถอดรหัสนั้นไม่มีประสิทธิภาพมากเมื่อเทียบกับเช่น การเข้ารหัสตาม AES เราใช้โปรโตคอลเช่น PGP ซึ่งทำการเข้ารหัสแบบไฮบริดแทน RSA ในโหมดการทำงานที่ปลอดภัยมีค่าโสหุ้ยที่แน่นอนและค่าสูงสุดต่อการดำเนินการ ดังนั้นโดยทั่วไปคีย์สมมาตรจะถูกเข้ารหัสหรือได้รับโดยใช้ RSA แทน คีย์สมมาตรนี้ใช้เพื่อเข้ารหัสข้อมูล การเข้ารหัสแบบสมมาตรเช่น AES ทำงานโดยตรงกับข้อมูลไบนารี ดังนั้นนอกเหนือจากการจัดการ IV และการเติม ข้อมูลสามารถเข้ารหัสได้โดยตรงโดยไม่ต้องแปลง