diff --git a/phpseclib/Crypt/Blowfish.php b/phpseclib/Crypt/Blowfish.php index ab79f220..9c91a0e1 100644 --- a/phpseclib/Crypt/Blowfish.php +++ b/phpseclib/Crypt/Blowfish.php @@ -333,6 +333,9 @@ class Blowfish extends BlockCipher public function isValidEngine($engine) { if ($engine == self::ENGINE_OPENSSL) { + if (version_compare(PHP_VERSION, '5.3.7') < 0 && $this->key_length != 16) { + return false; + } if ($this->key_length < 16) { return false; } diff --git a/phpseclib/Crypt/RC4.php b/phpseclib/Crypt/RC4.php index 66ac9957..067efb02 100644 --- a/phpseclib/Crypt/RC4.php +++ b/phpseclib/Crypt/RC4.php @@ -145,7 +145,23 @@ class RC4 extends StreamCipher public function isValidEngine($engine) { if ($engine == self::ENGINE_OPENSSL) { - $this->cipher_name_openssl = 'rc4-40'; + if (version_compare(PHP_VERSION, '5.3.7') >= 0) { + $this->cipher_name_openssl = 'rc4-40'; + } else { + switch (strlen($this->key)) { + case 5: + $this->cipher_name_openssl = 'rc4-40'; + break; + case 8: + $this->cipher_name_openssl = 'rc4-64'; + break; + case 16: + $this->cipher_name_openssl = 'rc4'; + break; + default: + return false; + } + } } return parent::isValidEngine($engine);