swissmakers / php-openssh
允许您生成4096位RSA私钥/公钥对,可用于身份验证方法,以及用于加密/解密字符串。
v1.0
2024-06-20 12:40 UTC
Requires
- php: ^8.1
- illuminate/support: ^8|^9|^10
- phpseclib/phpseclib: ^3.0.23
Requires (Dev)
- orchestra/testbench: ^8.12.2
- phpstan/phpstan: ^1.5
- phpunit/phpunit: ^10.4.2
- squizlabs/php_codesniffer: ^3.6
- dev-main
- v1.0
- dev-dependabot/composer/phpstan/phpstan-1.12.0
- dev-dependabot/composer/phpseclib/phpseclib-3.0.41
- dev-dependabot/composer/squizlabs/php_codesniffer-3.10.2
- dev-dependabot/composer/phpunit/phpunit-10.5.24
- dev-dependabot/github_actions/docker/setup-buildx-action-3
- dev-dependabot/github_actions/actions/cache-4
This package is auto-updated.
Last update: 2024-10-01 05:44:48 UTC
README
此库允许您生成4096位OpenSSH私钥/公钥对,可用于SSH身份验证和加密/解密字符串。
use Swissmakers\OpenSSH\PrivateKey; use Swissmakers\OpenSSH\PublicKey; // Generate a new OpenSSH key pair $privateKey = PrivateKey::generate(); $publicKey = $privateKey->getPublicKey(); // Encrypt and decrypt data using the key pair $data = 'my secret data'; $encryptedData = $publicKey->encrypt($data); // Returns unreadable data $decryptedData = $privateKey->decrypt($encryptedData); // Returns 'my secret data' in plaintext
安装
使用Composer安装此包
composer require swissmakers/php-openssh
使用方法
生成私钥并将其保存到文件中
use Swissmakers\OpenSSH\PrivateKey; $privateKey = PrivateKey::generate(); $privateKey->toFile('/home/foo/bar');
加载密钥
从文件加载密钥
use Swissmakers\OpenSSH\PrivateKey; use Swissmakers\OpenSSH\PublicKey; $privateKey = PrivateKey::fromFile($pathToPrivateKey); $publicKey = PublicKey::fromFile($pathToPublicKey);
从字符串加载密钥
use Swissmakers\OpenSSH\PrivateKey; use Swissmakers\OpenSSH\PublicKey; $privateKey = PrivateKey::fromString($privateKeyContent); $publicKey = PublicKey::fromString($publicKeyContent);
从私钥获取公钥
use Swissmakers\OpenSSH\PrivateKey; $privateKey = PrivateKey::fromString($privateKeyContent); $publicKey = $privateKey->getPublicKey();
加密和解密数据
使用公钥加密数据,并用私钥解密
use Swissmakers\OpenSSH\PrivateKey; use Swissmakers\OpenSSH\PublicKey; $data = 'my secret data'; $publicKey = PublicKey::fromFile($pathToPublicKey); $encryptedData = $publicKey->encrypt($data); $privateKey = PrivateKey::fromFile($pathToPrivateKey); $decryptedData = $privateKey->decrypt($encryptedData); // Returns 'my secret data'
如果解密失败,将抛出\Swissmakers\OpenSSH\Exceptions\BadDecryptionException
异常。
检查解密能力
确定数据是否可以用私钥解密
use Swissmakers\OpenSSH\PrivateKey; $privateKey = PrivateKey::fromFile($pathToPrivateKey); $canDecrypt = $privateKey->canDecrypt($data); // Returns a boolean
签名和验证数据
使用私钥签名数据,并用公钥验证
use Swissmakers\OpenSSH\PrivateKey; use Swissmakers\OpenSSH\PublicKey; $privateKey = PrivateKey::fromFile($pathToPrivateKey); $signature = $privateKey->sign('my message'); // Returns a string $publicKey = PublicKey::fromFile($pathToPublicKey); $isVerified = $publicKey->verify('my message', $signature); // Returns true $isModifiedVerified = $publicKey->verify('my modified message', $signature); // Returns false
验证输入(Laravel)
验证表单输入,检查有效的公钥或私钥
use Swissmakers\OpenSSH\Rules\PublicKeyRule; use Swissmakers\OpenSSH\Rules\PrivateKeyRule; public function rules(): array { return [ 'public_key' => [ new PublicKeyRule(), ], 'private_key' => [ new PrivateKeyRule(), ], ]; }
测试
使用以下命令运行测试
composer test
许可证
GNU通用公共许可证v3.0。有关更多信息,请参阅许可证文件。