首页 > 其他分享 >密码学家晚餐问题(n>2情况)

密码学家晚餐问题(n>2情况)

时间:2023-12-20 13:11:56浏览次数:28  
标签:账单 学家 硬币 NSA 密码 支付 晚餐

密码学家晚餐问题

场景描述

三位密码学家(Alice、Bob、Carol)正在享受晚餐,坐在他们钟爱的三星级餐馆。

业务逻辑

在准备支付账单时,侍者通知他们需要匿名支付,其中一个密码学家可能正在支付账单。账单可能已经由美国国家安全局(NSA)支付。他们互相尊重匿名支付的权利,但又需要确认是否是NSA在支付。

系统目标

确定是三者之一在支付账单,同时保护支付者的匿名性。

  1. 每个密码学家将菜单放在左边,相互隔离。
  2. 每人只能看到自己和右边密码学家的结果。
  3. 每个密码学家在他和右边密码学家之间抛掷一枚硬币。
  4. 每个密码学家广播她能看到的两枚硬币是同一面还是不同的一面。

判定结果:

  • 如果桌上说“不同”的人数为奇数,则某个密码学家在支付账单。
  • 如果桌上说“不同”的人数为偶数,则NSA在支付账单。

扩展1

当密码学家人数变为n,n>2时,结果是否仍成立?

首先引入XOR观念便于理解和阐释:

  • 硬币的结果只为0或1,密码学家给出的真结果:1⊕0=1,1⊕1=0,0⊕1=1与0⊕0=0
  • 假结果:1⊕0=0,1⊕1=1,0⊕1=0与0⊕0=1

对于n枚硬币,设为1有p个,为0有q个,每个硬币的状态为ai(ai=0或1),每位学家给出的结果为xi。

若没有学家付款,则:

[x_1⊕x_2⊕……⊕x_i=(a_i⊕a_1)⊕(a_1⊕a_2)⊕(a_2⊕a_3)⊕……(a_{i-1}⊕a_i)=a_i⊕a_1⊕a_1⊕a_2⊕a_2⊕a_3⊕……a_{i-1}⊕a_i=(a_1⊕a_1)⊕(a_2⊕a_2)⊕(a_3⊕a_3)⊕……(a_i⊕a_i)=0]

若有一位学家付款,且不妨假设他是第一位学家,则:

[x_1⊕x_2⊕……⊕x_i=(a_i⊕a_1)’⊕(a_1⊕a_2)⊕(a_2⊕a_3)⊕……(a_{i-1}⊕a_i)=(a_2⊕a_2)⊕(a_3⊕a_3)⊕……(a_{i-1}⊕a_{i-1})⊕(a_i⊕a_1)’⊕(a_i⊕a_1)=0⊕1=1]

同时,易知对于一系列0、1逐位异或的结果为0,若1的个数为偶数,为1,若0的个数为奇数。

所以,对于n>2时结果仍然成立:"桌上说“不同”的人数为奇数:某个密码学家在支付账单,"桌上说“不同”的人数为偶数:NSA在支付账单"的结论仍然成立。

标签:账单,学家,硬币,NSA,密码,支付,晚餐
From: https://www.cnblogs.com/yuzhenyang/p/17916291.html

相关文章

  • P1928 外星密码
    P1928外星密码一道经典递归题(但我没想出来)问题题目给的是一行的字符串。我一开始想直接对字符串进行处理,但发现非常麻烦,因为要对字符串做拆分,而且很难对括号[]做对应,也对数字字符整体判断麻烦,总体实现起来繁琐复杂。正确思路将字符串拆成每个字符,再读入,对每个读入判断,以读......
  • mysql8 WIN10密码重置处理
    1、设置权限:mysqld--console--skip-grant-tables--shared-memory2、管理运行CMD:mysql-urooy-p;无需认证,直接回车3、修改USER密码置空: usemysqlupdateusersetauthentication_string=''whereuser='root';4、退出mysql,执行命令:quit关闭以-con......
  • linux root密码重置过程
    在GRUB引导菜单中,使用向下箭头键选择以"CentOSLinux"开头的行,然后按下"e"键进入编辑模式按e键盘出现下面的界面(可以下拉),需要编辑修改:ro改为rwinit=/sysroot/bin/sh按Ctrl+x,使用单用户模式启动(进入救援模式使用 chroot /sysroot命令访问系统chroot/sysrootpasswd确认......
  • zookeeper添加用户密码认证
    1、zookeeper已部署并启动 2、连接进ZK[root@localhost~]#zkCli.sh 3、权限设置#查询默认权限#可以看到默认是world:anyone就相当于无权限访问getAcl/#添加一个账号密码,账号密码可自定义addauthdigestzkadmin:zk@123#给/根目录设置权限,也可以给其他......
  • Windows11忘记开机密码重置
    在锁屏页面按着shift键重启,找到命令行输入一下两行代码copyc:\windows\system\system32\utilman.exec:\windows\system32\utilman.exebakcopyc:\windows\system32\cmd.exec:\windows\system32\utilman.exe/y然后退出命令行,重启计算机,在输入密码页面右下角有一个轻松使......
  • 安防监控视频管理平台EasyCVR v3.4版如何取消首次登录强制重置密码的操作?
    在视频监控领域,智慧安防平台EasyCVR平台采用了开放式的网络结构,支持高清视频的接入和传输、分发,能提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,此外,高清可视化视频监控平台EasyCVR......
  • 磁盘阵列/视频监控系统EasyCVR新增邮件验证与定时更换登录密码功能
    TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,包括对人、车、......
  • Mysql 修改账号密码
    修改普通账号密码,登入之后执行:SETPASSWORD=PASSWORD('新密码'); http://dev.mysql.com/doc/refman/5.7/en/set-password.html 修改/设置root账号密码: https://blog.csdn.net/hdxx2022/article/details/132082376方法一,登入root之后执行:ALTERUSER'root'@'%'IDENTIFI......
  • C语言 哲学家进餐问题
     #include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<time.h>#include<unistd.h>#include<pthread.h>#include<semaphore.h>#defineNsem_tchopsticks[N];//设置5种信号量,有5种不同类型的资源,每一种有1个,这样便于理解,......
  • AndroidStudio设置密码可见不可见
    这里我们写一个在登录demo中常见的功能,当点击眼睛图片时,使密码可见或不可见,即形成一种保护,也防止了我们输入错误密码情况的出现,是很友好的一个功能。两张图片:睁眼:闭眼:大家记得复制粘贴到drawable.xml文件中。注意一下命名规则,推荐:see.png和nosee.png。然后,我们去写一下布局的代码:<L......