【问题标题】:How to implement RSA 4096 encryption in PHP Laravel [closed]如何在 PHP Laravel 中实现 RSA 4096 加密 [关闭]
【发布时间】:2021-04-20 11:25:55
【问题描述】:

我正在开展一个项目,我们正在尝试将支付提供商与此应用程序集成。支付提供商要求我们实施 RSA 4096 加密。我们的项目在 PHP Laravel 中。我的问题是有人可以告诉我如何在 Laravel 中完成 RSA 4096 加密吗?或者如果你能给我一些可以帮助我的阅读资源。这是我第一次使用加密。

编辑:我已经生成了公钥和私钥。现在需要知道 laravel 中是否有一个函数可以借助这些密钥对数据进行加密和解密。

【问题讨论】:

  • “需要我们实施”是什么意思? RSA 4096 通常用于 SSL 证书。
  • 就像我们需要生成 RSA4096 公钥私钥一样,对于 api,我们将使用公钥加密数据……当我们得到响应时,我们将使用私钥解密。我们需要实现这一点。
  • 您似乎正在寻找教程,而 Stack Overflow 不适合这样做。这是一个广泛的主题,因此您的问题可以解释为too broad(回答)或off-topic(推荐资源)。
  • 其实不是在找教程。我已经生成了公钥和私钥。现在需要知道 laravel 中是否有可以借助这些密钥对数据进行加密和解密的函数
  • php 具有用于非对称加密/解密的内置函数 (you can look here)。但对我来说,这听起来你应该使用 https/tls 而不是这个。

标签: php laravel encryption public-key-encryption private-key


【解决方案1】:

你可以使用phpseclib, a pure PHP RSA implementation:

供 laravel 在 composer 包下使用。

composer require phpseclib/phpseclib 
use phpseclib\Crypt\RSA as Crypt_RSA;

$rsa = new Crypt_RSA();
$rsa->loadKey($publickey);
$rsa->setEncryptionMode(2);
$data = 'Your String';
$output = $rsa->encrypt($data);
echo base64_encode($output);

您可以使用$rsa->createKey()生成公钥和私钥

  $rsa = new RSA();
  $keys = $rsa->createKey(4096);
  $publicKey = $keys['publickey'];
  $privateKey = $keys['privatekey'];

【讨论】:

  • 我运行了下面的代码(单独地不在 laravel 中)来创建密钥。代码成功运行,但钥匙放在哪里? setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1); //$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1); //定义('CRYPT_RSA_EXPONENT', 65537); //定义('CRYPT_RSA_SMALLEST_PRIME', 64); // 使用多素数 RSA extract($rsa->createKey()); // == $rsa->createKey(1024) 其中 1024 是密钥大小?>
  • 你在说什么键?如果您没有公钥/私钥,您可以使用$rsa->createKey(); 生成一个。
  • 我已经更新了答案
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 2011-12-20
  • 2012-11-10
相关资源
最近更新 更多