五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?

本文介绍了一种巧妙的方法,利用随机数和循环相加的技巧,五个同事能在不泄露具体薪资的情况下计算平均工资,同时确保数据安全。通过接力式的计算过程,避免了个人信息泄露的风险,展示了密码学在日常问题中的创新应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

44c1e23314c87f556854e1ce30dee4e4.png

源 | Xpecya@知乎

大家好我是卖萌酱。昨天在知乎上刷到一个很有意思的问题:“五个同事决定计算他们的平均工资,在大家互相不告诉薪水的情况下,如何才能做到这一点?”。

确实互联网公司是不让员工讨论薪资的,但通过一些神操作却可以在不触碰公司安全红线的情况下算出平均值,还是非常有意思的(请勿实操,后果自负)

假设五个同事分别为ABCDE,他们的工资分别为abcde

则A随便像一个数a1,他把a1告诉B

B也随便想一个数b1,把a1+b1的结果告诉C

C也随便想一个数c1,把a1+b1+c1的结果告诉D

D也随便想一个数d1,把a1+b1+c1+d1的结果告诉E

E也随便想一个数e1,带上自己的工资e,把a1+b1+c1+d1+e1+e的结果告诉D

D把自己的工资d加上去,把自己之前加上去的d1去掉,把a1+b1+c1+d+e1+e的结果告诉C

C把自己的工资c加上去,把自己之前加上去的c1去掉,把a1+b1+c+d+e1+e的结果告诉B

B把自己的工资b加上去,把自己之前加上去的b1去掉,把a1+b+c+d+e1+e的结果告诉A

A把自己的工资a加上去,把自己之前加上去的a1去掉,把a+b+c+d+e1+e的结果告诉E

E把自己的e1减掉,除以5,得到最终平均数。

这个做法的好处在于:

  1. 显然,全程中每个人都没有机会知道任何一个人的具体工资到底是多少。

  2. 哪怕数据传输过程中被他人截获,也没有机会用自己手中的随机数和工资反推其他人的工资(而其他答案中,比如第一个人随便想一个数,然后加上自己的工资传给第二个人,然后每个人加上自己的工资往下传,那么极端情况下,第一个人是有机会截获其他所有人传递的中间数据,根据自己手中的起始数退出所有其他人的工资。)这个算法唯一的破绽在于,只有所有人一起联手,交出自己手中的随机数,才能把所有人的工资推出来。

  3. 这个算法对任意大于等于2人的方式都成立。扩展性很好。

  4. 数据传输次数为2n-1(n表示人数),已经足够简略了。再少就不能保证安全了。

牛哇,没想到密码学还可以用到这里。卖萌酱最后再提醒一下请勿实操,毕竟其中很大一个风险是——最后发现自己的工资比平均工资还低,那就......

b037e037d48795891e5a5f70393eb535.png后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

6064daca877a88ec9219a7f4e3110166.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值