V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
c742435
V2EX  ›  问与答

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

  •  
  •   c742435 · 2015-04-12 22:15:43 +08:00 · 2590 次点击
    这是一个创建于 3299 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    5 条回复    2015-04-13 21:53:48 +08:00
    ryd994
        1
    ryd994  
       2015-04-12 22:17:56 +08:00
    这个这么做:
    原文hash+加密数据hash
    简单拼接,验证的时候验证其中之一…………

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

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

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

    抛砖引玉,求指正。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4527 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:04 · PVG 12:04 · LAX 21:04 · JFK 00:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.