Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何让Crypt::RSA显示其已生成的公钥和私钥?_Perl_Encryption - Fatal编程技术网

Perl 如何让Crypt::RSA显示其已生成的公钥和私钥?

Perl 如何让Crypt::RSA显示其已生成的公钥和私钥?,perl,encryption,Perl,Encryption,大家好,我正在摆弄perl模块。我已经让模块对字符串(密码)进行加密,然后将其导出到名为“test.key”的文件中,但我突然想到,如果我无法获取用于加密字符串的密钥,那么密码就不好了 当我试图让它简单地打印标量$private和$public时,我会得到一个看起来像散列(0x00000)的输出。据我所知,这意味着密钥存储在散列中,问题是我不知道为了打印有问题的密钥而创建的散列的名称。它说Crypt::RSA的参数可以在一个手册页中找到,而这个手册页在我的系统中显然不存在 有什么想法吗 这是我分

大家好,我正在摆弄perl模块。我已经让模块对字符串(密码)进行加密,然后将其导出到名为“test.key”的文件中,但我突然想到,如果我无法获取用于加密字符串的密钥,那么密码就不好了

当我试图让它简单地打印标量$private和$public时,我会得到一个看起来像散列(0x00000)的输出。据我所知,这意味着密钥存储在散列中,问题是我不知道为了打印有问题的密钥而创建的散列的名称。它说Crypt::RSA的参数可以在一个手册页中找到,而这个手册页在我的系统中显然不存在

有什么想法吗

这是我分解的示例代码

#!/usr/bin/perl

use strict;

use warnings;
use Crypt::RSA;
my $rsa = new Crypt::RSA;
my $message = "hello world";
my ($public, $private) = $rsa->keygen ( 
    #Identity  => '',
    Size      => 1024,  
    #Password  => '', 
    Verbosity => 1,
    ) or die $rsa->errstr();

my $cyphertext = $rsa->encrypt ( 
    Message    => $message,
    Key        => $public,
    Armour     => 1,
    ) or die $rsa->errstr();

my $plaintext = $rsa->decrypt ( 
    Cyphertext => $cyphertext, 
    Key        => $private,
    Armour     => 1,
    ) or die $rsa->errstr();

print $public;

print $private;

open FILE, ">", "test.key" or die $!;
print FILE "$cyphertext\n";
close FILE;

模块的文档可以在上找到,并且应该安装在您的系统上(
perldoccrypt::RSA

以下是相关链接:

从这里,您希望看到以下页面,这些页面描述了关键变量的基于方法的接口

将来,请发布脚本生成的确切输出。在这种情况下,输出可能包含您的答案(您试图打印的对象的模块名称)。那么文档只需搜索一下就可以了

在这种情况下,它可能类似于:

print $_->serialize, "\n" for $public, $private;

当我在终端中键入perldoc时,我得到了“您需要安装perl文档包”,这让我觉得没有任何文档会被安装,因为perl文档模块没有安装。我在CPAN中看到了这些模块,但我认为它们与生命周期和吊销中的密钥管理有关。我会看看这个链接,可能正是我所需要的。谢谢@Soligins:如果您计划大量使用perl,请安装perldoc,它将为您提供perldoc程序和核心模块的doc。您安装的其他模块的文档已经在您的系统上,但是perldoc将使阅读变得容易。