【问题标题】:Is it possible to encrypt data in perl using Crypt::OpenSSL::RSA and decrypt data in php?是否可以使用 Crypt::OpenSSL::RSA 在 perl 中加密数据并在 php 中解密数据?
【发布时间】:2016-10-21 13:38:57
【问题描述】:

我尝试使用 Crypt::OpenSSL:RSA 加密 perl 中的数据并解密 php 中的数据。 我可以在 perl 中解密,但在 php 中得到 NULL。

perl 代码:

use strict;
use MIME::Base64;
use Crypt::OpenSSL::RSA;

print "Content-Type: text/html\n\n";

my $string = '123';

my $key_string = "-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2n9QlRt3ERZXt6CQ5ufb
eKIlzaJFqr7LxgxiRSy/ZdMnxvCdRoKtW4JbVM62WaEBuOVZIxlJRYRTplloDl9l
7yksxEfN5/AosIJzOPqjj1U1ICvoFS1ORS/8FwAqBd3HeL8BW3gIH+03WTh+bKE/
65u7hyTEi/bb3k1JtxUVSKI04EovCZVivR/nhAZ7lJrjhW23vmhTwlIoIijZfOre
ctE00rcJ9I5KY4V4djQM8mDGFWQTNrdBku+DpGt4//lw/i5w0/MCr9mHqSw3Nxty
/PnMG7dpiA+WjVA9W1TYCVcRZBD+Wsd3OjXxgl46OZYdI5dKYNLKE7BUMccEJj9l
eQIDAQAB
-----END PUBLIC KEY-----";

my $public = Crypt::OpenSSL::RSA->new_public_key($key_string);
$string = $public->encrypt($string);

$string = MIME::Base64::encode_base64($string);

print $string;

php代码:

<?php
    $encrypted = 'ZkEVc2US6/mqeix3409VYXSTmJtycVLxXztsKpCFpbb6Adp3MBRfYL4nblsWLND+17xaLhVqk4+h ZPw97gzAqlp8YNPA4vgCVdzamq84+kVd7Ykqot9UcDq9zRSpo7S/8EenZO8Cu9OlAwvTavb2pSnX z0w9a9mJqmIJ+zYtao6L1tV3+WlcMIYix9vaIiWU5qZigjNAlff+wT20pEh7Lqu2iAsd1h8aKt5l 3NBRqHG9M0WqTdhzrqk0Rvb9i/a2Zoo7XWC/jz9OR8FaThCM7Gyw8+jWL+z+aL2qveeAPW9e7Pwa GSk1SibTs1L0lTeQk8FmjtC2IW1j7Qn8NzUcZA==';
    $encrypted = base64_decode($encrypted);
    $key_content = "-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----";
    $private_key_res = openssl_get_privatekey($key_content);
    openssl_private_decrypt($encrypted, $decrypted, $private_key_res);
    var_dump($decrypted);
?>

我在 PHP 中得到 NULL

【问题讨论】:

  • 这看起来有点眼熟。我想我见过类似的问题。
  • 请同时显示您正在使用的 PHP 代码。你可以edit你的问题。对于这种事情,我们需要一个minimal reproducible example
  • 我通过添加$public-&gt;use_sslv23_padding();解决了这个问题
  • 您应该将其发布为答案,并为未来的读者提供一些解释。

标签: php perl


【解决方案1】:

通过添加 $public->use_sslv23_padding() 解决了这个问题; 加密数据可以在php中解密。

【讨论】:

    猜你喜欢
    • 2011-02-28
    • 2022-01-22
    • 2015-02-26
    • 2016-01-08
    • 1970-01-01
    • 2019-04-13
    • 2018-10-27
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多