2016-07-06 20 views
1

Ich versuche eine Perl-Lösung zu finden, um den Typ der Schlüssel zu identifizieren. Ich habe eine Liste von Schlüsseldateien und ich muss wissen, welche DSA und welche RSA sind.DSA/RSA-Schlüssel in Perl angeben

Ich weiß, dass ich es auf Linux mit folgendem Befehl tun:

ssh-keygen -lf id_dsa.pub 

Ich versuche, eine reine Perl-Lösung zu finden, die sowohl unter Windows und Linux funktionieren würden.

Vielen Dank.

+0

würde es da draußen RFC oder andere Spezifikation Dokumente, die beschreiben, was diese Tasten aussehen. Sobald Sie sie haben, sollten Sie in der Lage sein, Parser für sie zu implementieren. – simbabque

+0

Haben Sie sich jemals angesehen, was sich in einer öffentlichen Schlüsseldatei befindet? denn wenn du es tust, wäre die Antwort auf deine Frage offensichtlich! – salva

Antwort

0

Sie können File::LibMagic verwenden, die dieselbe Bibliothek wie der Unix-Befehl file verwendet.

auf Ubuntu installierte ich es als:

apt-get install libmagic-dev 

cpan File::LibMagic 

Für Fenster, ist es bekannt, mit Cygwin zu arbeiten, und es sollte mit Fenstern arbeiten, wenn Sie die libmagic Bibliotheken installieren können. Ich habe das nicht versucht, also YMMV.

Beispiel

#!/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"; 

Ausgabe

[ /home/felix/.ssh/id_dsa.pub ] : OpenSSH DSA public key 
[ /home/felix/.ssh/id_rsa.pub ] : OpenSSH RSA public key 
+0

Vielen Dank für die Lösung. Leider benötigt es für Windows Cygwin, das ich zu vermeiden versuche. – Andrey

+0

Haben Sie versucht, libmagic unter Windows zu installieren? – xxfelixxx

+0

Ja, tat ich. Die Installation ist aufgrund von Abhängigkeiten in zwei verschiedenen Windows-Umgebungen fehlgeschlagen. – Andrey