如何使用从数据库pem格式phpseclib获取的私钥

问题描述 投票:0回答:1

我已经在数据库中存储了一些 pem 文件,我现在希望使用它来加载密钥,以便 ssh 到有问题的盒子中。但是,当我的代码到达 $key->load( $pub ); 时我的代码中出现错误。该代码以前是通过将键作为文件中的字符串来工作的,但更喜欢将它们放在数据库中,因为随着需要更多键,它会更容易维护。

我使用的是 phpseclib,因为 RSA 文件中没有 loadKeys 函数。当密钥粘贴到脚本中时,代码可以工作。我使用phpmyadmin直接将代码粘贴到数据库中。我的开发机器是 Win 10,但实际运行时它将位于内部 Linux 服务器上

$lightsail = new lightsail();
$pub = $lightsail->getPemByName();

$pub = str_replace("\r", '', $pub ); // Noticed key returned had \r\n so corrected it but still fails
$key = new RSA();
$key->load( $pub );

我看到的错误如下

( ! ) Fatal error: Uncaught Error: Call to a member function toBytes() on string in something\phpseclib\Crypt\RSA.php on line 724
( ! ) Error: Call to a member function toBytes() on string in something\phpseclib\Crypt\RSA.php on line 724
Call Stack
#   Time    Memory  Function    Location
1   0.2199  430880  {main}( )   ...\dequeue.php:0
2   40.8792 1169040 backup->backupDatabase( )   ...\dequeue.php:181
3   76.7275 2748016 phpseclib\Crypt\RSA->load( ???, ??? )   ...\my.class.php:986

我认为这是将 pem 粘贴到 phpmyadmin 中的问题,是这里的问题吗?我找不到任何使用 $key->load() 而不是 $key->loadKey() 与 pem 文件的示例,甚至更少在数据库中使用 pem 密钥。

我的下一个方法将是加载文件内容,如果这种方法毕竟是死胡同。

php rsa phpseclib
1个回答
0
投票

最后我从文件中加载它( $pub = file_get_contents($path);),这有效。

© www.soinside.com 2019 - 2024. All rights reserved.