我正在尝试找到一个Perl解决方案来识别密钥的类型。 我有一个关键文件列表,我需要知道哪些是DSA,哪些是RSA。
我知道我可以使用以下命令在Linux上执行此操作:
ssh-keygen -lf id_dsa.pub
我正在努力寻找一种适用于Windows和Linux的纯Perl解决方案。
谢谢。
答案 0 :(得分:0)
您可以使用File::LibMagic使用与unix file
命令相同的库。
在ubuntu上,我将其安装为:
apt-get install libmagic-dev
cpan File::LibMagic
对于Windows,已知可以使用Cygwin,如果可以安装libmagic库,它应该与windows一起使用。我没试过这个,所以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