【问题标题】:How to encrypt data using rsa public key in php如何在 php 中使用 rsa 公钥加密数据
【发布时间】:2016-07-25 10:44:50
【问题描述】:

接收方给了我一个公钥,我需要用它来加密用户名和密码。我做了各种研发,但没有任何效果。 我用过

function public_encrypt($plaintext)
{
    $fp=fopen("private.key","r");
    $pub_key=fread($fp,8192);
    fclose($fp);
    openssl_get_publickey($pub_key);
    openssl_public_encrypt($plaintext,$crypttext, $pub_key);
    return(base64_encode($crypttext));
}

但它给了我openssl_public_encrypt(): key parameter is not a valid public key 错误。

我还为键添加了开始和结束行,但仍然没有成功 由于我是新手,请指导我遵循的步骤。

【问题讨论】:

  • $pubkey=openssl_get_publickey($pub_key);
  • 我试过了。在加密中使用了 $pubkey,仍然没有成功。仍然得到同样的错误。请帮忙。
  • 获取公钥需要证书文件
  • 有趣的是,您将 public key 命名为 private.key。这里的问题是您没有收到格式正确的密钥。问题的第二部分是你不能用公钥加密任何数量的数据,有一个限制而且它相当小。公钥/私钥加密通常用于在两方之间传输对称密钥。如果我是你,我会要求一个 PEM 格式的公钥,这样你就不必经历试图强迫它自己进入 openssl 理解的过程。
  • 另外,@Jonasw - 你从哪里读到以----PUBLIC KEY START---- 开头的公钥?这不是任何编码格式中的正确分隔符。

标签: php encryption rsa public-key-encryption


【解决方案1】:

您正在尝试解码一个似乎不是任何已知格式的密钥。我认为它是由不完全了解加密的人制作的,因为它具有 1023 位模数。

如果您查看十六进制表示,您会发现模数为:

4D49BB0D2E0FA132D081A6338C178124AB2B1B61A57C6C30D05EAD179BE1040B235E0EE83F3BF29A8F19DC33B7E245FAE7BE96E35CC2DF49E8B519D4F53501E3566D693A66E69D8C812AF66AC6D5D86ED764ED27A91C5828CE860A8B01077C15142B77BF772AFF201577DF8FBE9E92168539480E024DFF51173CD26B65858ACA

(只是结构中的最后一个值,大小接近 1024 位)和一个带有值的公共指数

010001

【讨论】:

    猜你喜欢
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2011-03-08
    • 2014-06-23
    相关资源
    最近更新 更多