问题 如何在PHP中加密长字符串?


我正在使用PHP的openssl_public_encrypt()来使用RSA加密数据。但它不会加密大于特定大小的数据。

如何让它加密任意长度的数据?


11981
2018-06-08 11:25


起源



答案:


php.net页面有一个很好的提示这个问题(像往常一样) http://www.php.net/manual/en/function.openssl-public-encrypt.php#95307


4
2018-06-08 11:33





使用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相同的操作。

希望有所帮助!


6
2018-06-14 16:10