【问题标题】:How do I get Crypt::RSA to show its public and private keys that have been generated?如何让 Crypt::RSA 显示其已生成的公钥和私钥?
【发布时间】:2010-12-23 00:48:05
【问题描述】:

您好,我在搞乱Crypt::RSA perl 模块。我已经让模块加密一个字符串(密码),然后将其导出到一个名为“test.key”的文件但我突然想到,如果我无法获得用于加密字符串的密钥,那么密码就不好了第一名。

当我尝试让它简单地打印标量 $private 和 $public 时,我得到一个看起来像 HASH(0x00000) 的输出。到目前为止,我可以收集到这意味着密钥存储在 HASH 中,问题是我不知道为打印有问题的密钥而创建的 HASH 的名称。它说 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;

【问题讨论】:

    标签: perl encryption


    【解决方案1】:

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

    这里是相关链接:http://search.cpan.org/dist/Crypt-RSA/

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

    对于将来,请发布您的脚本产生的确切输出。在这种情况下,输出可能包含您的答案(您尝试打印的对象的模块名称)。然后只需搜索一下文档即可。

    在这种情况下,它可能是这样的:

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

    【讨论】:

    • 当我在终端中键入 perldoc 时,我得到“您需要安装 perl-doc 包”,这让我认为由于没有安装 perl-doc 模块,因此不会安装任何文档。
    • 我在 CPAN 中看到了这些模块,但我认为它们与生命周期和撤销中的密钥管理有关。我会看一下链接,可能正是我需要的。谢谢!
    • @Solignis:如果您打算大量使用 perl,请安装 perl-doc,它将为您提供 perldoc 程序和核心模块的文档。您已安装的其他模块的文档已经在您的系统上,但 perldoc 将使阅读变得容易。
    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2017-11-02
    • 2010-11-21
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    相关资源
    最近更新 更多