五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?
源 | 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,得到最終平均數。
這個做法的好處在于:
顯然,全程中每個人都沒有機會知道任何一個人的具體工資到底是多少。
哪怕數據傳輸過程中被他人截獲,也沒有機會用自己手中的隨機數和工資反推其他人的工資(而其他答案中,比如第一個人隨便想一個數,然后加上自己的工資傳給第二個人,然后每個人加上自己的工資往下傳,那么極端情況下,第一個人是有機會截獲其他所有人傳遞的中間數據,根據自己手中的起始數退出所有其他人的工資。)這個算法唯一的破綻在于,只有所有人一起聯手,交出自己手中的隨機數,才能把所有人的工資推出來。
這個算法對任意大于等于2人的方式都成立。擴展性很好。
數據傳輸次數為2n-1(n表示人數),已經足夠簡略了。再少就不能保證安全了。
牛哇,沒想到密碼學還可以用到這里。賣萌醬最后再提醒一下請勿實操,畢竟其中很大一個風險是——最后發現自己的工資比平均工資還低,那就......
后臺回復關鍵詞【入群】
加入賣萌屋NLP、CV與搜推廣與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AcWing之从尾到头打印链表
- 下一篇: python手机编译器可以干什么_Pyt