我需要找到一种方法将RSA公钥传输到我的网络通信程序的服务器。我已经做了一些研究,似乎最简单的方法是将公钥(作为某种散列引用存储)转换为JSON进行传输。但是,在我的测试代码中,我无法获得转换为JSON的密钥。这里是我的测试程序:将RSA密钥转换为JSON Perl
use strict;
use warnings;
use Crypt::RSA;
use JSON;
my %hash = (name => "bob",
age => 123,
hates=> "Perl"
);
my $hash_ref = \%hash;
my $hash_as_json = to_json($hash_ref);
print $hash_as_json, "\n"; # Works fine for a normal hash
my $rsa = new Crypt::RSA;
my ($public, $private) = $rsa->keygen (
Identity => 'client',
Size => 512,
Password => 'password',
Verbosity => 1,
) or die $rsa->errstr();
my $key_hash_as_json = to_json($public, {allow_blessed => 1, convert_blessed => 1});
print $key_hash_as_json, "\n";
之前,我发现了线{allow_blessed => 1, convert_blessed => 1}
我得到了一个错误信息说
遇到的对象 '地穴:: RSA ::主要:: =公共HASH(0x3117128)'但既不 allow_blessed,convert_blessed也不allow_tags设置 启用(或TO_JSON/FREEZE方法缺失)在 /home/alex/perl5/lib/perl5/JSON.pm线154
这是什么意思,为什么这条线修复它?
添加代码后,当我尝试打印JSON时,它只给出null
。为什么会发生这种情况,我该如何解决?
另外,有没有更好的方式做我在这里尝试的?