RSA cho phép bất kỳ kích thước khóa nào, vì các phép tính được thực hiện bằng các số nguyên lớn không dấu. Kích thước mô-đun tính bằng bit chỉ định kích thước khóa.
Tuy nhiên, nhiều triển khai có những hạn chế. Nhiều thư viện ít nhất sẽ yêu cầu một mô-đun là bội số của 8 bit, nhưng những thư viện chỉ cho phép tăng 32 bit hoặc thậm chí chỉ các kích thước khóa cụ thể không phải là hiếm. Nếu các kích thước khóa cụ thể được sử dụng thì đó thường là lũy thừa của hai (như kích thước bạn đã đề cập) hoặc việc thêm hai lũy thừa tiếp theo của hai (ví dụ: 2048 + 1024 = 3072 bit).
Điều hợp lý là việc triển khai phần cứng có kích thước khóa tối đa. Việc triển khai cũng có thể thường yêu cầu kích thước khóa tối thiểu - vẫn còn tranh cãi liệu loại kiểm tra đó có nên được thực hiện ở cấp độ triển khai thuật toán hay không; Cá nhân tôi không ủng hộ nó.
Thông thường các tiêu chuẩn sẽ sử dụng các loại kích thước khóa đó, nhưng đôi khi các tùy chọn khác được sử dụng, ví dụ:. 1792 bit (1024 + 512 + 256 = 1792) hoặc 1920 bit (1024 + 512 + 256 + 128) cho các hoạt động của thẻ thông minh trong đó bản mã hoặc chữ ký 2048 bit sẽ không vừa với một Đơn vị Dữ liệu Giao thức Ứng dụng (APDU) (được bảo vệ). Như bạn có thể thấy, họ sẽ cố gắng và ở càng gần bội số của một số lũy thừa hai càng tốt.
Lưu ý rằng PKCS#1 đã được xác định để mã hóa cả mô đun và số mũ cũng như bản mã/chữ ký dưới dạng byte (hoặc octet). Tuy nhiên, các chế độ đệm được xác định trong đó sẽ hoạt động ngay cả khi mô đun không phải là bội số của 8.
Một điều cần lưu ý là số mũ riêng về cơ bản là một giá trị ngẫu nhiên giữa 0 và mô đun. Rất có thể nó gần bằng mô đun về kích thước, nhưng nó có thể nhỏ hơn một hoặc nhiều byte khi được mã hóa thành số byte tối thiểu.