我的结构网络有许多Client
对象,这些对象已使用PGP加密。网络上的对等组织具有与之关联的安全私钥,一些(但不是全部)组织可以根据其授权者解密Client
对象。
例如。 Client
对象看起来像这样
Client {
ID: "abcdef",
AuthorizedPartners: ["ABC", "Partner X", "1234"],
Encrypted: "<PGP ENCRYPTED STRING>"
}
重要的是只有AuthorizedPartners
可以解密Client.Encrypted
字段中的数据,而其他人则不能。
Encrypted
字段的解密版本是ClientInfo
对象,其中包含有关客户端的某些信息,例如:
ClientInfo {
Name: "Ryder",
PhoneNum: "+1234567890",
Email: "abc@example.com"
}
我以前的更新信息的方法涉及建立同行组织:
ID
获取客户端数据。Client.Encrypted
字段并将其建模为ClientInfo
ClientInfo
ClientInfo
并用它替换Client.Encrypted
Client.Encrypted
字段当然,此方法不允许智能合约进行任何验证,因为它无法自行解密信息。
我想以一种更好的方式来解决这个问题,那就是让智能合约以某种方式解密信息本身。例如,如果我们想更改与Client
关联的电话号码,我可以
UpdateClientPhoneNum(id, newNum, decryptionKey)
Client.Encrypted
来解密decryptionKey
Phonenum
字段AuthorizedPartners
的公钥重新加密客户端现在,我的问题是,像这样安全地将解密密钥传递给智能合约吗?如果没有,我还能如何实现这一流程?谢谢