#!/usr/bin/perl use Crypt::RSA; my $Identity = 'Lord Banquo '; my $Password = 'The earth hath bubbles'; my $KF = 'SSH'; my ($public, $private); my $kf = lc(substr($KF,0,3)); my $priv_key_file = sprintf('id_rsa_%s.sec',$kf); # --------------------------------------------------- if ( ! -e $priv_key_file ) { # key pair generation : my $rsa = new Crypt::RSA; ($public, $private) = $rsa->keygen( Identity => $Identity, Size => 1024, Cipher => 'Twofish', Password => $Password, Verbosity => 0, KF => $KF, #Filename => 'id_rsa_ssh', PP => 'ASCII', Armour => 1 ) or die $rsa->errstr(); delete $rsa->{KF}; $rsa->{PKF} = $KF; $public->write( Filename => sprintf('id_rsa_%s.pub',$kf) ); $rsa->{SKF} = $KF; $private->write( Filename => $priv_key_file ); } # --------------------------------------------------- # reading back the key ... $sk = new Crypt::RSA::Key::Private ( Filename => $priv_key_file, Identity => $Identity, ); #$sk->read( Filename => 'id_rsa_ssh.sec', Password => $Password ); $sk->hide(); $sk->write( Filename => 'id_rsa_hide.sec' ); $sk->reveal( Password => $Password ); $sk->write( Filename => 'id_rsa_reveal.sec' ); printf "sk: %s.\n",$sk->serialize(); # --------------------------------------------------- 1; # $Source: /my/perl/code/rsa_ssh_test.pl $;