我正在尝试查找Perl解决方案来识别密钥的类型。 我有一个关键文件列表,我需要知道哪些是DSA,哪些是RSA。使用Perl识别DSA/RSA密钥
我知道我可以用下面的命令做在Linux上:
ssh-keygen -lf id_dsa.pub
我试图找到一个纯Perl的解决方案,能够在Windows和Linux的工作。
谢谢。
我正在尝试查找Perl解决方案来识别密钥的类型。 我有一个关键文件列表,我需要知道哪些是DSA,哪些是RSA。使用Perl识别DSA/RSA密钥
我知道我可以用下面的命令做在Linux上:
ssh-keygen -lf id_dsa.pub
我试图找到一个纯Perl的解决方案,能够在Windows和Linux的工作。
谢谢。
您可以使用File::LibMagic,它使用与unix file
命令相同的库。
在Ubuntu,我安装了它:
apt-get install libmagic-dev
cpan File::LibMagic
对于Windows,它是已知Cygwin的工作,并应与窗户工作,如果你可以安装libmagic库。我没有尝试过,所以YMMV。
例
#!/usr/bin/env perl
use warnings;
use strict;
use File::LibMagic;
my $magic = File::LibMagic->new();
my $key_dsa = '/home/felix/.ssh/id_dsa.pub';
my $info_dsa = $magic->info_from_filename($key_dsa);
print "[ $key_dsa ] : " . $info_dsa->{description} . "\n";
my $key_rsa = '/home/felix/.ssh/id_rsa.pub';
my $info_rsa = $magic->info_from_filename($key_rsa);
print "[ $key_rsa ] : " . $info_rsa->{description} . "\n";
输出
[ /home/felix/.ssh/id_dsa.pub ] : OpenSSH DSA public key
[ /home/felix/.ssh/id_rsa.pub ] : OpenSSH RSA public key
会有RFC或其他规范文件,在那里,描述一下这些按键的样子。一旦你有他们,你应该能够为他们实现解析器。 – simbabque
你有没有看过公钥文件中的内容?因为如果你这样做,你的问题的答案将是显而易见的! – salva