如果我错了,请纠正我。我只是好奇聪明的合同能做多少。我不太熟悉公钥加密技术,但我目前的理解是,A可以使用B的公钥向B发送加密消息。(这些数据是否存储在事务或智能契约中。)如果另一个人C想为这条消息支付B,是否可以编写一个智能契约,解锁相同的加密消息,但这一次在C发送事务给B时用C的公钥加密,而不需要B进行任何操作?或者,如果A也参与了这一明智的合同,那么是否只能确认该消息没有被B所操纵?
发布于 2018-02-05 15:54:11
我认为有几个关键的概念,你需要理解,以充分回答你的问题。
是否可以编写一个智能契约来解锁相同的加密消息?
从理论上讲,但天然气成本可能太高,而且可能需要将私钥存储在智能契约/众所周知的我建议你读一下这个类似的问题的答案,以便得到更深入的解释。中。
解锁相同的加密消息,但这次是在C向B发送事务时用C的公钥加密的
这个想法的一个问题是,如果Smart契约能够解密每个运行代码的节点所要做的数据,那么就会知道消息的内容--就像第一步是解密消息,然后再加密它;在此过程中,秘密消息将暂时清空。
不受B的操纵
您真正想知道的是,如果您能够证明该消息没有被B和公钥加密一起修改,我还建议您阅读数字签名。本质上,C解密的明文的散列应该与明文的散列相同,加密的数字签名是以不可信的方式确保这一点的加密方法。
我希望这能帮你把事情弄清楚一点。
发布于 2018-02-05 15:43:40
(A) => MSG => {ENCRYPT w/ B's Public Key} => {MSG} => (B)
(B) => {MSG} => {UNENCRYPT w/ private key} => MSG为了使(C)能够获得这个{MSG},它不能用B的公钥加密。
(B)必须解密{MSG}。然后,用(C)'s公钥加密。
现在,(C)可以接收消息,解密并读取它所说的内容。
我相信你已经明白了。
但是,这个解密和加密过程需要脱离链,因为它需要通过事务发送私钥和纯文本。你不能这么做!
要使用智能契约解密,需要将私钥发送给区块链上的每个矿工!加密也是如此,纯文本将被发送给每一个矿工!
参见本主题:智能契约中的密码学
所以,从链上加密和解密。这些付款仍然可以通过明智的合同来促进。抛出事件以触发用于加密/解密链的进程,并发送新事务以将加密的消息传递给新SC。
在这一点上,供应链将处理付款和已经加密的信息。
正如SteveJaxon所提到的,为了验证(B)没有更改消息,您需要提供来自(A)的原始消息的散列。
https://ethereum.stackexchange.com/questions/38606
复制相似问题