Estoy usando PHP's openssl_public_encrypt() para encriptar datos usando RSA. Pero no cifrará datos de un tamaño superior a cierto tamaño.Cómo cifrar cadenas largas en PHP?
¿Cómo puedo cifrar datos de una longitud arbitraria?
Estoy usando PHP's openssl_public_encrypt() para encriptar datos usando RSA. Pero no cifrará datos de un tamaño superior a cierto tamaño.Cómo cifrar cadenas largas en PHP?
¿Cómo puedo cifrar datos de una longitud arbitraria?
La página php.net tiene una excelente sugerencia para este problema (como de costumbre) http://www.php.net/manual/en/function.openssl-public-encrypt.php#95307
RSA, utilizando relleno PKCS1, sólo se permite que hagas cadenas que son la longitud de la clave (en bytes) - 11. Esta no es una restricción de OpenSSL o PHP, sino más bien una restricción de RSA.
Si desea hacer cadenas más largas utilizando el conjunto de funciones openssl_ * use openssl_seal y openssl_open. openssl_seal genera una cadena aleatoria, la encripta con RSA y luego encripta los datos que está tratando de encriptar con RC4 usando la cadena aleatoria mencionada anteriormente como la clave.
phpseclib, a pure PHP RSA implementation, toma un enfoque diferente. Si insiste en encriptar una cadena más grande que la clave RSA, dividirá esa cadena en fragmentos que son el tamaño máximo que RSA puede manejar y luego concatenará los resultados.
La página phpseclib OpenSSL Interoperability explica cómo puede usar phpseclib para hacer lo mismo que openssl_seal/openssl_open.
Espero que ayude!