在Perl中识别DSA / RSA密钥

时间:2016-07-06 13:44:15

标签: perl rsa gnupg pgp dsa

我正在尝试找到一个Perl解决方案来识别密钥的类型。 我有一个关键文件列表,我需要知道哪些是DSA,哪些是RSA。

我知道我可以使用以下命令在Linux上执行此操作:

ssh-keygen -lf id_dsa.pub

我正在努力寻找一种适用于Windows和Linux的纯Perl解决方案。

谢谢。

1 个答案:

答案 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