算法数据结构中来什么奇技淫巧?
罗必成 45分钟前 58 数据结构 数组算法数据结构中,有哪些技巧或使用方式能让你觉得“卧槽,还能这样用”?想要的就是那种特别简洁,理解以后又眼前一亮的技巧~
0 赞 0 踩
其他回答
Yao's protocol.
「如何让两个女士比较出谁更胖——在她们都不想泄漏体重的前提下?」
问题是这样的:假设 Alice 手上有一个隐私函数 f,Bob 有隐私数据 x,那么请为他们设计一个协议,让双方互相不给任何人透露自己隐私的情况下,计算出 f(x) 的数值?(从 f(x) 的结果推断 x 或者 f 不算在内;双方始终遵守协议。)
实现是这样的:考虑一个 k 个 bit 到一个 bit 的简单函数 f(更复杂的函数可以简化到这个样子),alice 可以打出 f 的真值表来,然后她产生 k+1 对随机数,表示 k 个输入 bit()和输出 bit 的 0/1 值()。
接着她按照这些随机数加密真值表,比如如果 f(1, 1)=0,则她用两个随机数作为密钥加密产生一个密文。她可以把加密的真值表连同表示结果的随机数发给 Bob。
接下来 Bob 需要按照自己的数据(x)找 Alice 要 k 个随机数解码他拿到的真值表,真值表中只有一项可以被解码,解码的结果就是 f(x),其他的则无法解码。
要随机数的过程是基于 Oblivious Transfer,这个协议要求:
有关 @aricatamoy「为什么不用天平」,那么请问:两个人该怎么做才能保证天平上面没被动过手脚,暗地里收集她们的体重呢?
「如何让两个女士比较出谁更胖——在她们都不想泄漏体重的前提下?」
问题是这样的:假设 Alice 手上有一个隐私函数 f,Bob 有隐私数据 x,那么请为他们设计一个协议,让双方互相不给任何人透露自己隐私的情况下,计算出 f(x) 的数值?(从 f(x) 的结果推断 x 或者 f 不算在内;双方始终遵守协议。)
实现是这样的:考虑一个 k 个 bit 到一个 bit 的简单函数 f(更复杂的函数可以简化到这个样子),alice 可以打出 f 的真值表来,然后她产生 k+1 对随机数,表示 k 个输入 bit()和输出 bit 的 0/1 值()。
接着她按照这些随机数加密真值表,比如如果 f(1, 1)=0,则她用两个随机数作为密钥加密产生一个密文。她可以把加密的真值表连同表示结果的随机数发给 Bob。
接下来 Bob 需要按照自己的数据(x)找 Alice 要 k 个随机数解码他拿到的真值表,真值表中只有一项可以被解码,解码的结果就是 f(x),其他的则无法解码。
要随机数的过程是基于 Oblivious Transfer,这个协议要求:
- Bob 根据自己的选择获取 Alice 两条私密消息中的一条,另一条则无法解密;
- 而 Alice 不能得知 Bob 的选择。
- Alice 生成 RSA 公钥-密钥对,她把公钥发给 Bob,Bob 根据自己的选择获取。以下计算均在上进行。
- Alice 生成两个随机数发给 Bob。
- Bob 生成随机数 k,计算发给 Alice。由于 k 是私密的,Alice 无法解密出 c 来。
- Alice 计算,发送给 Bob。
- Bob 计算(因为),而对于另一条消息,他就无法成功解码。
有关 @aricatamoy「为什么不用天平」,那么请问:两个人该怎么做才能保证天平上面没被动过手脚,暗地里收集她们的体重呢?