Tôi có một số văn bản rõ ràng mà tôi muốn mã hóa bằng RSA_PKCS_V21 (sử dụng thư viện PolarSSL). Vấn đề là tôi cần phải biết kích thước của văn bản mã hóa trước khi thực hiện các thuật toán (cho mục đích phân bổ bộ nhớ động). Tôi biết kích thước khóa RSA & độ dài văn bản rõ ràng.
Tôi cũng muốn biết giới hạn về độ dài văn bản đầu vào rõ ràng.
Bất kỳ ý tưởng nào?Cách tính kích thước của văn bản mã hóa RSA bằng cách sử dụng kích thước khóa và độ dài văn bản rõ ràng?
Trả lời
Chỉ cần kiểm tra RSA PKCS#1 v2.1 standard, chapter 7.2:
RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M)
Input:
- (n, e) của người nhận RSA khóa công khai (k biểu thị độ dài trong octet của mô đun n)
- Thông điệp được mã hóa, chuỗi octet có độ dài mLen, trong đó mLen < = k - 11
Vì vậy, đầu vào phụ thuộc vào kích thước then chốt. k
là kích thước chính nhưng trong octet. Vì vậy, đối với khóa 1024 bit, bạn có 1024/8 - 11 = 117 byte làm văn bản thuần tối đa.
Lưu ý rằng ở trên là kích thước tối đa cho RSA với đệm PKCS # 1 v1.5. Đối với OAEP đệm mới sau đây có thể được tìm thấy trong chapter 7.1:
RSAES-OAEP-ENCRYPT ((n, e), M, L)
...
Input:
- (n, e) RSA khóa công khai của người nhận (k biểu thị độ dài trong octet của mô đun n RSA) nhắn
- M được mã hóa, một chuỗi octet của l ength mLen, nơi mLen < = k - 2hLen - 2
- L nhãn tùy chọn được liên kết với thông báo; giá trị mặc định cho L, nếu L không được cung cấp, là trống rỗng chuỗi
đâu hLen là kích thước đầu ra của hàm băm sử dụng cho chức năng hệ mặt nạ. Nếu hàm băm SHA-1 mặc định được sử dụng thì kích thước tối đa của thông báo là k - 42 (vì kích cỡ đầu ra của SHA-1 là 20 byte và 2 * 20 + 2 = 42).
Thông thường, khóa bí mật được tạo ngẫu nhiên được mã hóa thay cho thư. Sau đó, tin nhắn được mã hóa bằng khóa bí mật đó. Điều này cho phép các tin nhắn gần như vô hạn và mật mã đối xứng - chẳng hạn như AES ở chế độ CBC - nhanh hơn nhiều so với mật mã không đối xứng. Sự kết hợp này được gọi là hybrid encryption.
Kích thước đầu ra cho mã hóa RSA hoặc hệ chữ ký với bất kỳ đệm trùng với kích thước của mô đun theo byte (làm tròn lên, tất nhiên), vì vậy đối với một chìa khóa 1024 bit bạn mong chờ 1024/8 = 128 octet/byte.
Lưu ý rằng mảng đầu ra của kích thước được tính có thể chứa các byte hàng đầu được đặt thành 0; điều này nên được coi là bình thường.
- 1. iOS: UIButton đổi kích thước theo độ dài văn bản
- 2. đặt màu và kích thước văn bản html bằng cách sử dụng javascript
- 3. Bất kỳ cách nào để giảm kích thước văn bản?
- 4. Tính kích thước văn bản trước khi vẽ lên canvas
- 5. ProgressDialog: thay đổi kích thước văn bản
- 6. Tính kích thước văn bản theo chiều rộng của vùng văn bản
- 7. Lấy kích thước văn bản trong SFML
- 8. Làm cách nào để bạn phù hợp với kích thước và độ dài tối đa của hộp nhập văn bản?
- 9. kích thước khối tối đa RSA nào để mã hóa?
- 10. Cách lấy kích thước của khóa RSA trong Java
- 11. hoạt ảnh của kích thước văn bản của TextView
- 12. PIL cách quy mô kích thước văn bản có liên quan đến kích thước của hình ảnh
- 13. Trình duyệt Android tự động đổi kích thước văn bản
- 14. Thay đổi kích thước văn bản thành Fit trên UITextView
- 15. mã hóa AES cắt văn bản trong chế độ CFB
- 16. Thay đổi kích thước hình ảnh theo kích thước văn bản
- 17. kích thước văn bản tiêu đề cửa sổ
- 18. Thay đổi kích thước văn bản trên UIButton
- 19. Kiểm soát kích thước ưa thích của một JEditorPane với văn bản dài
- 20. Chrome: tạo văn bản không thay đổi kích thước
- 21. Android: TextView.setTextAppearance() không ảnh hưởng đến kích thước văn bản
- 22. Cắt nhãn văn bản để đổi kích thước
- 23. jQuery - nhập văn bản kích thước tự động (không phải văn bản!)
- 24. phông chữ văn bản thay đổi kích thước
- 25. Kích thước văn bản quy mô tự động
- 26. Cách tìm kích thước hiển thị đúng của chuỗi văn bản trong Java
- 27. Đặt văn bản trong JLabel tự động đổi kích thước
- 28. JTextPane văn bản rõ ràng
- 29. Văn bản nhãn không được tự động thay đổi kích thước bằng cách sử dụng Bố cục tự động
- 30. Cách tính kích thước tệp âm thanh?
Đây là một câu hỏi khá cũ, nhưng vì tôi vừa vấp phải nó trong khi nghiên cứu một phần câu hỏi: Tôi nghĩ câu trả lời này không trả lời toàn bộ câu hỏi, cũng yêu cầu kích thước của * ciphertext *, không chỉ các giới hạn về kích thước đầu vào. tức là, được cung cấp khóa RSA 2048 bit, mật mã * được tạo ra * lớn như thế nào cho một thông điệp rõ ràng? Câu hỏi này không được giải quyết bằng câu trả lời của bạn (hoặc tôi đã bỏ qua nó). – malexmave
@malexmave Đã thêm một phần khác vào câu trả lời. Quên về nó vì nó là loại hiển nhiên. ** Cảnh báo ** kích thước khóa 1024 bit chỉ là một ví dụ, sử dụng kích thước khóa 2048 bit hoặc cao hơn được khuyến khích mạnh mẽ. –