2014-04-21 21 views
6

Thông báo lỗi "dữ liệu lớn hơn mod len" có nghĩa là gì? Tôi đã gặp phải điều này trong khi cố gắng giải mã dữ liệu bằng cách sử dụng openssl_private_decrypt của php. Làm cách nào để giải quyết vấn đề này? Đã tìm kiếm giờ trực tuyến, không nhận được bất cứ nơi nào.Mở dữ liệu "lớn hơn mod len"

Trả lời

10

phím bất đối xứng RSA có thể mã hóa/giải mã chỉ dữ liệu có độ dài hạn chế tức là chương trình mã hóa RSAES-PKCS1-v1_5 quy định tại RFC3447 thể hoạt động trên các thông điệp có độ dài lên đến k - 11 octet (k là độ dài octet của modulus RSA) vì vậy nếu bạn đang sử dụng khóa RSA 2048 bit thì độ dài tối đa của dữ liệu thuần được mã hóa là 245 byte.

+0

Có chức năng xác định kích thước hình ảnh và kích thước tối đa không? Tôi biết các thư viện khác có tương tự (như Crypto ++), nhưng đã không đi qua nó trong OpenSSL. – jww

+0

@jww cho RSA có [RSA_size()] (https://www.openssl.org/docs/crypto/RSA_size.html) trả về kích thước mô đun RSA và có [mối quan hệ được ghi lại giữa kích thước mô đun, độ dài tối đa của plaintext và paddings khác nhau] (https://www.openssl.org/docs/crypto/RSA_public_encrypt.html). Tôi đã không nhìn thấy bất cứ điều gì chung chung hơn trong OpenSSL API cho các thuật toán không đối xứng (mà tất nhiên không có nghĩa là một cái gì đó như thế không tồn tại). – jariq

+0

Cảm ơn. 'RSA_size' không thực sự hữu ích. Tôi đã hỏi về danh sách người dùng OpenSSL: [RSA và kích thước ảnh tối đa?] (Https://groups.google.com/forum/#!topic/mailing.openssl.users/ruoFBjX-s7w). – jww

Các vấn đề liên quan