我正在嘗試查找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