phpseclib / phpseclib2_compat
使用 phpseclib 3.0 构建的 phpseclib 2.0 兼容包
1.0.6
2024-02-26 14:37 UTC
Requires
- phpseclib/phpseclib: ^3.0
Requires (Dev)
- phpunit/phpunit: ^5.7|^6.0|^9.4
Provides
- phpseclib/phpseclib: 2.0.47
README
使用 phpseclib 3.0 构建的 phpseclib 2.0 兼容包
概览
phpseclib 3.0 与 phpseclib 2.0 不兼容。最明显的是公钥的工作方式完全不同。假设您想使用 phpseclib 3.0,而一些其他依赖项仍在使用 phpseclib 2.0,您会怎么做?
这就是 phpseclib2_compat 发挥作用的地方。需要 phpseclib/phpseclib:~3.0 和 phpseclib/phpseclib2_compat:~1.0,即使您的依赖项不知道,它们也会神奇地开始使用 phpseclib 3.0。
使用 phpseclib2_compat 实际上会给您的依赖项带来一些增强。例如,虽然 phpseclib 2.0 只支持 RSA 密钥,但 phpseclib2_compat 还支持 ECDSA / DSA / Ed25519 / Ed449 密钥。
考虑以下代码示例
use phpseclib\Crypt\RSA; $rsa = new RSA; $rsa->loadKey('ecdsa private key'); $ssh = new SSH2('website.com'); $ssh->login('username', $rsa);
这将在 phpseclib2_compat 中正常工作,即使使用 ECDSA 私钥,而在 phpseclib 2.0 中则不会工作。
SSH1 和 SCP 不受支持,但这些可能从来都没有被频繁使用。
使用旧的加密套件
phpseclib 3.0 使用与 2.0 不同的加密套件(一个扩展的套件)。如果这导致您遇到问题,您可以在调用 $ssh->login()
之前使用 2.0 加密套件。
$methods = [ 'crypt' => array_intersect([ 'arcfour256', 'arcfour128', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'twofish128-ctr', 'twofish192-ctr', 'twofish256-ctr', 'aes128-cbc', 'aes192-cbc', 'aes256-cbc', 'twofish128-cbc', 'twofish192-cbc', 'twofish256-cbc', 'twofish-cbc', 'blowfish-ctr', 'blowfish-cbc', '3des-ctr', '3des-cbc' ], $ssh->getSupportedEncryptionAlgorithms()), 'mac' => [ 'hmac-sha2-256', 'hmac-sha1-96', 'hmac-sha1', 'hmac-md5-96', 'hmac-md5' ], 'comp' => ['none'] ]; $ssh->setPreferredAlgorithms([ 'kex' => [ 'curve25519-sha256@libssh.org', 'diffie-hellman-group-exchange-sha256', 'diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group14-sha256' ], 'hostkey' => [ 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-rsa', 'ssh-dss' ], 'client_to_server' => $methods, 'server_to_client' => $methods ]);
安装
使用 Composer
composer require phpseclib/phpseclib2_compat:~1.0