更新01:
BUG:可能通过观点的长度泄露信息。
FIX:预先将观点hash一遍。
近几年网上的争论,无论是在公开的论坛微博也好,或是相对私密的群聊喝单独聊天也好,绝大部分都是谁也说不了谁,甚至不能达成一定的共识,让大家的观点往中间靠一靠,反而朝着比原本更极端的方向发展。究其根本原因,这些争论大多涉及到所谓“三观”的深刻层次,一时半会的只言片语是完全无法对此产生丝毫动摇的,反而可能会使原有的成见更加坚定。那与其产生这种效果,不如一开始就不要见面的好。那么如何在“见面”的阶段选择性的添加三观一致的好友呢,理想情况下可以这样:
大家把自己的各种根深蒂固,不可动摇,堪称是信仰级别的观念列成表公开。
大家选择与自己列表重合度最高的人加好友。
但是显然并不是所有人都希望完全公开地展示自己的观念的,某些情况下还可能导致期望之外的后果。
改进版:
大家把自己的各种根深蒂固,不可动摇,堪称是信仰级别的观念列成表,上传到平台。
平台推荐大家选择与自己列表重合度最高的人加好友。
虽然现在大部分网络社交平台已经在用智能化的算法偷偷帮用户这么干了,但平台实际上也并不是完全可靠并且中立的,把列表交给他并不比交给别人放心。
比较稳妥的办法是:
1. 大家把自己的各种根深蒂固,不可动摇,堪称是信仰级别的观念列成表。
2. 大家见面时通过一些技巧,在不泄露具体内容的同时算出表的重合度。
要做到这两点可以设计一个简单的秘密共享协议,假设参与双方为A和B:
首先选定一个可交换的加密算法,比如最简单的XOR,记为C。
A和B把自己的观念列成表,记为$ A_m $和$ B_m $。并将表中每一项分别用各自的密钥$a$和$b$加密。得到密文
A:$\rm C_a(A_m)$
B:$\rm C_b(B_m)$
分别发给对方,对方收到后再次用自己的密钥加密,得到
B:$\rm C_b(C_a(A_m))$
A:$\rm C_a(C_b(B_m))$
之后再次互相发给对方。由于XOR是可交换的,所以如果$ A_m $和$ B_m $本身是相同的,那么完成这些步骤之后的上面这两项也一定是相同的,由此可以判断相同观点的数量。但是又由于不掌握对方的密钥,最终无法通过密文得知具体究竟是哪个观点是相同的,因此不会泄露对方或自己具体持有哪个观点。
DEMO:
XXXXXXXXXXXXXXXXXXXXXXXX/OpinionsMatcher/XXXXXXXXXXXXXXml
github:
XXXXXXXXXXXXXXXXXX/gym487/OpinionsMatcher
用法:
=======================================
更新01:
BUG:可能通过观点的长度泄露信息。
FIX:预先将观点hash一遍。
[修改于 4年0个月前 - 2020/05/06 15:30:50]
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。