我需要找到一種方法將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
。爲什麼會發生這種情況,我該如何解決?
另外,有沒有更好的方式做我在這裏嘗試的?