2011-06-08 25 views
10

RSA kullanarak verileri şifrelemek için PHP'nin openssl_public_encrypt() yöntemini kullanıyorum. Ancak, belirli bir boyuttan daha büyük olan verileri şifrelemez.PHP'de uzun dizeleri nasıl şifreleyebilirsiniz?

Rasgele uzunluktaki verileri şifrelemek için nasıl alabilirim? 11 -

cevap

5

RSA, PKCS1 padding, sadece uzunluğu (bayt) anahtardır dizeleri yaparsınız sağlar sahiptir. Bu bir OpenSSL veya PHP kısıtlaması değil, bir RSA kısıtlamasıdır.

openssl_ * işlevlerini kullanarak daha uzun dizeler yapmak isterseniz openssl_seal ve openssl_open kullanın. openssl_seal rastgele bir dize oluşturur, RSA ile şifreler ve daha sonra anahtar olarak daha önce belirtilen rastgele dize kullanarak RC4 ile şifrelemeye çalıştığınız verileri şifreler.

phpseclib, a pure PHP RSA implementation, farklı bir yaklaşım gerektirir. RSA anahtarından daha büyük bir dizgiyi şifrelemekte ısrar ederseniz, bu dizgeyi, RSA'nın işleyebileceği maksimum boyuttaki parçalara böler ve sonuçları birleştirir.

phpseclib OpenSSL Interoperability sayfa, openssl_seal/openssl_open ile aynı şeyi yapmak için phpseclib'i nasıl kullanabileceğinizi anlatır.

Bu yardımcı olur umarım!