有没有这样的加密算法和散列算法,数据被加密后依然符合一个散列函数?

2015-04-12 22:15:43 +08:00
 c742435

即,原始数据的任何一个加密结果都是该散列函数的一个碰撞。
卧槽似乎是很没用的散列算法呢Orz
当然,加密算法要足够强难以被解密,散列算法在原始数据不同时也难以找到碰撞。

这个问题的原因是
《区块链是否能够根除比特币》 http://v2ex.com/append/topic/183109
发送方向接收方发送一串下载数据后,接收方不能直接解密,但可以确认是原始下载数据而不是骗人用的随机字符串。然后发送方向接收方支付,然后接收方回传解密密钥,同时将密钥写入区块链。这是在两个互不信任的节点中建立信任机制的方式。

2595 次点击
所在节点    问与答
5 条回复
ryd994
2015-04-12 22:17:56 +08:00
这个这么做:
原文hash+加密数据hash
简单拼接,验证的时候验证其中之一…………

好吧严肃的:
先问问你为什么需要这样的函数?你在做什么?要实现什么功能?
c742435
2015-04-12 22:34:25 +08:00
@ryd994
整个的下载/支付流程是这样的:
0:接收方有种子,也就是有原始数据散列值。
1:发送方将原始数据用上述加密算法加密后发给接收方。同时,将加密数据的常规散列值(比如MD5)用同样的密码加密写入区块链(所有人都能看到)
2:接收方收到加密数据后,确认是原始数据的加密副本。则将加密数据的常规散列值写入区块链。
发送方确定加密数据的常规散列值正确后,发出支付请求。此时,所有人都知道,接收方成功接收的发送方的数据。
接收方支付成功后,发送方将密码写入区块链。所有人都可以用该密码解密1中的加密数据常规散列值加密结果,确认是2中的加密数据常规散列值。如果正确,说明发送方正确的传送了解密密码。此时,发送方可以被认为是积攒了一些信用。
c742435
2015-04-12 22:36:46 +08:00
卧槽才发现帖子正文中的引用标题错到离谱……不能修改也是醉了。。。
simonlei
2015-04-12 22:41:17 +08:00
请参考『同态加密』算法。
同态加密是一种加密形式,它允许人们对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。换言之,这项技术令人们可以在加密的数据中进行诸如检索、比较等操作,得出正确的结果,而在整个处理过程中无需对数据进行解密。其意义在于,真正从根本上解决将数据及其操作委托给第三方时的保密问题,例如对于各种云计算的应用。
li2150
2015-04-13 21:53:48 +08:00
有点没看明白,只对第一句话做点评论。

如果是足够强的加密算法,加密后的结果应该是准随机的。所以“原始数据的任何一个加密结果都是该散列函数的一个碰撞”等价于“任何一组随机数据都是该散列函数的一个碰撞”。

除非加密算法和散列函数共享同一个key?不过这样应该不是楼主的本意吧。

抛砖引玉,求指正。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/183291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX