Về cơ bản có hai bước để làm điều này:
- mã hóa văn bản thành byte - điều này thường yêu cầu mã hóa ký tự như mã hóa UTF-8 hoặc Latin;
- mã hóa các byte thành số nguyên - đây là một phần của hoạt động mã hóa trong RSA như được chỉ định trong PKCS#1 và được thực hiện bằng chức năng có tên là OS2IP.
Trong trường hợp của bạn, văn bản rõ ràng đã được mã hóa thành byte; Rốt cuộc, các tệp bao gồm các byte và bạn đang mở tệp dưới dạng tệp nhị phân (b trong cờ rb).
OS2IP có nghĩa là chuỗi octet thành số nguyên nguyên thủy. Một chuỗi octet không gì khác hơn là một mảng byte. Nếu các byte đã ở đúng dạng thì đó chỉ là vấn đề phiên dịch các byte dưới dạng số, vì máy tính luôn xử lý mọi thứ dưới dạng nhị phân.
Mặc dù vậy, trong RSA OS2IP dựa trên PKCS#1 không được sử dụng trực tiếp: trước tiên, một phần đệm liên quan đến bảo mật được áp dụng. Đây sẽ là phần đệm được xác định PKCS#1 v1.5 hoặc phần đệm OAEP. Thêm phần đệm có nghĩa là một lượng chi phí không đáng kể được thêm vào trước khi thông báo được áp dụng; lượng bản rõ nhỏ hơn nhiều so với mô đun RSA.
Đây là một lý do tại sao các tệp thường không được mã hóa trực tiếp bằng RSA. Lý do chính khác là mã hóa RSA và đặc biệt là các hoạt động giải mã rất kém hiệu quả so với ví dụ. Mã hóa dựa trên AES. Thay vào đó, chúng tôi sử dụng một giao thức chẳng hạn như PGP thực hiện mã hóa lai. RSA trong chế độ hoạt động an toàn có một chi phí hoạt động nhất định và mức tối đa cho mỗi hoạt động, do đó, thông thường, khóa đối xứng được mã hóa hoặc dẫn xuất bằng RSA thay thế; khóa đối xứng này sau đó được sử dụng để mã hóa dữ liệu. Các mật mã đối xứng như AES hoạt động trực tiếp trên dữ liệu nhị phân, do đó, bên cạnh việc xử lý IV và phần đệm, dữ liệu có thể được mã hóa trực tiếp mà không cần chuyển đổi.