0

公開鍵を使用して RSA 暗号化メッセージを復号化しようとしています。

を使用するCrypt::OpenSSL::RSAと、どちらのキーを使用しても暗号化できますが、秘密キーでしか復号化できません。公開鍵で復号化を試みます:

use Crypt::OpenSSL::RSA;
use MIME::Base64;
use File::Slurp;

my $public_key  = 'rsa.pub.pem';
#my $private_key = 'rsa.priv.pem';
my $rsa_public  = Crypt::OpenSSL::RSA->new_public_key(scalar read_file $public_key);
#my $rsa_private = Crypt::OpenSSL::RSA->new_private_key(scalar read_file $private_key);

my $ciphertext_b64 = 'cqyPNNfqYaUeIsM1yAz7IsQ760Bkd4IPaatHnMQtQAMKtYTEUqFHwnSZ4hg2
pkoJM1N5Ejlv6Eqkk/ZaMWl1nTDOxRDj0V6PARQPqz3QF1UGWkSMxMt/DlSn
AtrRXgjvrILbMX5BsV2S5mHcLoCeNVb+jdnX0x0Uu/AAFPsByPRrt1yM1ORo
KcP+0ENvcvJ8yGOxJ2jOEmTFkQM5kjNDIFmLUlt6qODdTGWvYWR2CDduLO4m
qiyAt4yK5K3vwMybAG5ceRGb/kmMSW10EnvbryIdDGVGS8Zvodu3xqtbM1Yo
tdtZRDkcUcOYlUi3VRvSTimatVkJPG8QDlZofrBA0w==';

my $ciphertext = decode_base64($ciphertext_b64);

print $rsa_public->decrypt($ciphertext);
#print $rsa_private->decrypt($ciphertext);

結果:Public keys cannot decrypt at test.pl line 19.

ちなみに、Ruby はどちらのキーでも問題なく暗号化および復号化できるようです (これが、私が現在このような状況にある理由です)。

4

3 に答える 3

4

Crypt::OpenSSL::RSApublic_decryptにメソッドがあることに気づきましたか?

于 2012-10-16T07:42:35.537 に答える
0

秘密鍵で復号化するか、公開鍵で署名を検証し、適切な方法を使用する必要があります。あなたの質問から、暗号化または署名のどちらを行うかは不明です。

「RSA 暗号化メッセージを復号化」しようとすると、何をしたいのか、使用しているライブラリが実際に何をしているのかがまったくわかりません。暗号化とデジタル署名に使用されるパディングは、RSA では異なります。したがって、間違ったメソッドを呼び出すと、最良の場合でもエラー メッセージが表示され、最悪の場合、安全でないスキームになってしまいます。

于 2012-10-16T09:56:32.287 に答える