Pau*_*l J 11 php rsa public-key-encryption
我正在使用PHP的openssl_public_encrypt()来使用RSA加密数据.但它不会加密大于特定大小的数据.
如何让它加密任意长度的数据?
使用PKCS1填充的RSA只允许您执行密钥长度的字符串(以字节为单位) - 11.这不是OpenSSL或PHP限制,而是RSA限制.
如果您想使用openssl_*函数集执行更长的字符串,请使用openssl_seal和openssl_open.openssl_seal生成一个随机字符串,使用RSA对其进行加密,然后使用前面提到的随机字符串作为密钥加密您实际尝试使用RC4加密的数据.
phpseclib是一个纯PHP RSA实现,采用了不同的方法.如果您坚持加密大于RSA密钥的字符串,它会将该字符串拆分为RSA可以处理的最大大小的块,然后连接结果.
phpseclib OpenSSL互操作性页面讨论了如何使用phpseclib执行与openssl_seal/openssl_open相同的操作.
希望有所帮助!
php.net 页面对这个问题有一个很好的提示(像往常一样)http://www.php.net/manual/en/function.openssl-public-encrypt.php#95307