Javascript 有没有一种方法可以使用Hyperledger结构生成的公钥/私钥对文件/字符串进行加密?

Javascript 有没有一种方法可以使用Hyperledger结构生成的公钥/私钥对文件/字符串进行加密?,javascript,encryption,hyperledger-fabric,Javascript,Encryption,Hyperledger Fabric,我正在我的项目中使用Hyperledger Fabric V1.4。我已经注册了用户。现在我想在用户之间传输文件,同时保持私有,这意味着我需要加密文件,这样只有接收者才能看到。例如,用户A希望向用户B发送一个文件。我现在考虑的基本工作流程是: 用户A和B在Hyperledger网络中注册并获取公钥/私钥 用户A在IPFS中上传一个文件,并从IPFS中获取一个哈希值。(由于具有哈希的每个人都可以访问该文件,因此我们需要加密该文件哈希。) 使用用户B的公钥加密文件哈希 将加密哈希发送给用户B 用户B

我正在我的项目中使用Hyperledger Fabric V1.4。我已经注册了用户。现在我想在用户之间传输文件,同时保持私有,这意味着我需要加密文件,这样只有接收者才能看到。例如,用户A希望向用户B发送一个文件。我现在考虑的基本工作流程是:

  • 用户A和B在Hyperledger网络中注册并获取公钥/私钥
  • 用户A在IPFS中上传一个文件,并从IPFS中获取一个哈希值。(由于具有哈希的每个人都可以访问该文件,因此我们需要加密该文件哈希。)
  • 使用用户B的公钥加密文件哈希
  • 将加密哈希发送给用户B
  • 用户B接收加密的散列并使用B的私钥解密散列,并获取IPFS文件散列。然后B可以使用IPFS查看散列 我遇到的问题:

  • 在步骤3中,如何获取用户的公钥?我只找到了获取证书和私钥的方法。或者我可以从证书中获取公钥吗
  • 是否有使用Hyperledger生成的公钥和私钥加密文件/字符串的算法
    谢谢大家!

    是的,这可能是类似的,但对于ECDSA,它不能以这种方式工作。您不使用用户B的公钥进行加密。您要做的是从用户B的公钥和用户a的私钥派生出对称密钥,其方式与从用户a的公钥和用户B的私钥派生出相同的对称密钥。它被称为ECDH。这里我没有Javascript示例(您可以用与我相同的方式搜索),但要理解它,请看一看并尝试一下中的示例(使用OpenSSL)

    您可以从证书(它嵌入在证书中)获取公钥,也可以从私钥派生公钥。选择你的方式

    注意:我发现在将内容存储在IPFS中并共享哈希之前对其进行加密比加密哈希更安全


    编辑:对于NodeJ,您可以尝试以下操作:。它似乎还包含一些类似于您最初寻找的内容。

    我找不到从证书或私钥派生公钥的方法。我试过node forge,但失败了。你有什么建议吗?