【问题标题】:Node encrypt with public certificate使用公共证书加密节点
【发布时间】:2016-09-14 02:04:43
【问题描述】:

我正在尝试做与 php seal 函数等效的操作。 我有一个要加密的字符串、一个公钥和一个随机生成的密钥,我必须使用 'rs4' 算法对字符串进行编码。

到目前为止,我设法使用加密函数对字符串进行了编码:

var password = crypto.randomBytes(128);
var cipher = crypto.createCipher('rc4', password);
var crypted = cipher.update(text,'utf8','base64');
crypted += cipher.final('base64');

但不知何故,我需要在加密中包含公共 x509 证书。

有人能指出正确的方向吗?

【问题讨论】:

  • 您只使用一个公钥吗?如果是这样,尝试复制 PHP 的密封功能不是您想要的。您正在寻找简单的public key encryption。如果您确实有多个公钥,那么您在问题中链接到的手册页会准确告诉您发生了什么。如果您在 node.js 中找不到完全符合此功能的函数,您可以随时编写自己的函数。
  • 是的,我只有一个公钥。我会听从您的建议并尝试 node ursa。谢谢!

标签: php node.js ssl encryption


【解决方案1】:

RC4 不是公钥加密系统。您正在寻找(按优先顺序):

  • 节点钠
  • 具有 MGF1+SHA256 和 e = 65537 的 RSAES-OAEP

另外,对于密钥加密,不要使用 RC4。

【讨论】:

  • 根据opensssl_seal的php文档,它是一种公钥和随机私钥的方法。为了解密数据,需要两个密钥,+ 公钥的私钥。 (类似于diffie hellman?)
【解决方案2】:

最后我没有找到在节点中实现相同加密的任何方法,所以我只是从节点调用了一个 php cli 脚本,该脚本发送了要加密的数据,并读取了加密 base64 结果的标准输出:(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 2015-05-14
    • 2018-08-03
    • 2020-08-13
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多