【发布时间】:2020-04-05 20:05:29
【问题描述】:
我最近开始学习超级账本结构,我正在开发一个简单的私有区块链来管理数字数据,这些数据将使用用户公钥加密,只能使用用户私钥解密,所以我的问题是,是有一种方法可以在超级账本结构中获取用户私钥和公钥以进行数据加密
【问题讨论】:
标签: hyperledger-fabric hyperledger
我最近开始学习超级账本结构,我正在开发一个简单的私有区块链来管理数字数据,这些数据将使用用户公钥加密,只能使用用户私钥解密,所以我的问题是,是有一种方法可以在超级账本结构中获取用户私钥和公钥以进行数据加密
【问题讨论】:
标签: hyperledger-fabric hyperledger
虽然 MSP ECDSA 密钥用于签名,但您可以使用它们通过 ECDH 进行加密。基本上,您可以从公钥 A 和私钥 B 中导出与从公钥 B 和私钥 A 中相同的共享密钥,以便将该共享密钥用作对称 AES 密钥进行加密。
openssl 的示例:https://jameshfisher.com/2017/04/14/openssl-ecc/。您不需要创建密钥对,因为您已经拥有它们。您可以使用 elliptic 和 crypto 库在 javascript 中实现它。
您管理自己的私钥和公钥(注册后在您客户的钱包中),但您必须安排可靠的方式来分发对方的公钥。如果公钥嵌入在有效证书中,您可以轻松验证该公钥,但分发方式掌握在您手中。
【讨论】:
elliptic库,我不能使用node-RSA,因为它还不支持
elliptic 和crypto。和jsrsasign 用你的钥匙“玩”。
jsrsasign 从您的身份中提取密钥,使用elliptic 的“p256”曲线导出您的共享密钥,并使用crypto 使用导出的共享密钥进行加密。
是的,fabric 使用公钥基础设施。 Fabric 中的每笔交易都由用户的私钥签名。在链码级别,您可以从用户的电子证书中获取用户的公钥。
Fabric 文档中有关身份的更多信息 https://hyperledger-fabric.readthedocs.io/en/release-2.0/identity/identity.html
CID golang 包以获取链码级别的电子证书https://github.com/hyperledger/fabric-chaincode-go/tree/master/pkg/cid
【讨论】: