Alice和Bob各有乙個0到9的數,他們怎樣能在不暴露自己數的前提下知道他們的數字是否相同?

時間 2021-07-05 21:27:31

1樓:PubliusAnonymous

1.設計乙個逆運算不容易算的演算法,再隨便想一組公鑰。這一步可以由兩個人中的任意一人來做。

2.兩個人分別利用公鑰和演算法,加上自己的數字,進行運算,獲得結果。

3.兩個人比較結果,相同則兩人數字相同。

這麼做對於10個數字來說有問題,因為可以通過窮舉來算出每乙個數字對應的結果,會導致暴露。

當然了,兩個人各10個數字也就100個組合,如果不通過第三方(包括第三方裝置),任意一方總是可以通過窮舉來暴力破解的。

2樓:我就是我

對於第三種情況,只要設定乙個無法反推的加密方法比如現在比較多的雜湊加密,相同數加密後結果一樣。比較的時候乙個人比較加密後的一部分是否相同,乙個人比較加密後的另一部分

3樓:EssethamSun

1、準備10個信封,每個貼了一張寫了0到9序號的便簽

2、先由A把一張紙牌放到自己數字的信封裡貼好

3、再由B把除自己數字外的信封全部扔掉,並把剩下信封上寫有自己數字的便簽撕掉

4、這時雙方一起撕開這個沒有貼數字的信封,如果信封當中有紙牌,說明AB數字相同;如沒有紙牌,則說明數字不同,並且此時AB均不知對方數字

(這個解法和姚期智的百萬富翁問題的簡單解法相同,需要AB保持可信,沒有對自己的數字說謊。而和百萬富翁解法不同的是,在本問題下,AB保持誠實可信是可以期待的:因為我只有在誠實選擇自己數字的前提下,才能在看到盒子當中有紙牌,獲知雙方數字相同的時候得到有價值的資訊,也就是對方的數字(因為和我一樣嘛)

也就是說,如果我說謊了,我不能像百萬富翁問題的解法那樣,單方面得知「對手與自己虛構數字之間的大小」這一資訊,而是依然什麼都不知道。所以對雙方來說最好的策略都是不去說謊

還有乙個更簡單的方法

1、在一間房間中,準備10個寫了0到9序號的盒子

2、由A、B分別進入房間,於自己數字的盒子裡放置一張紙牌,放完後離開

3、再由A、B分別進入房間,檢視自己數字的盒子裡有沒有兩張紙牌,如果只有一張則說明數字不同

不過在這個方法中,只要A或B想,除了A第一次進房間的時候,他們隨時都能在自己進入房間時,檢視其它九個盒子並單方面得知對方的數字。當然如果有手段限制每人進一次房間只能開啟乙個盒子,就不存在這個問題

4樓:james

如果只有兩方,因為比較是必然發生的,當比較發生時,就會給雙方提供一些關於數字的資訊。加上數字範圍只是0到9(的整數),entropy很小。根據Kerckhoffs's principle,演算法應假定為已知的。

那麼,在只有兩方的時候,雙方必然有方法知道對方的數字。

5樓:裴森

Alice在十張紙上依次寫下你是0麼,你是1麼,你是2麼……你是9麼

Bob誠實作答後Alice只開啟第a個問題檢視答案。

6樓:saturnman

我覺得不存在第三方的情況下最多可以做到乙個弱化的結論,就是可以讓一方知道另一方是不是真的知道自己手中的數字。比如A知道了B是否知道自己手中的數字,而且A還知道了B手中的數字(弱化了),但是B不知道A手中的數字也不知道是不是相等。否則用字典總是可以破解出數字的,0-9太少了。

7樓:magic2728

第三個問題包含前面兩個,故解決第三個。

準備10個盒子編號0-10和10張紙條,A把小於等於他數編號的盒子裡放入寫1的紙條,剩下的放0,將盒子依次從0開始一排放好,走出屋子。

B開啟自己編號的盒子,然後把其餘盒子打亂順序,叫A進來,一起看裡面的紙條。

如果是1,B≤A,需要兩人再倒過來做一次對偶實驗,還成立兩人就相等。

如果是0,必然不想等。

後來一想完全不必這麼麻煩,A只需要在自己數的盒子裡放1,其餘放0就好了,一次性就能判別出來,還沒有透露大小資訊。最多1bit不會再多了。

這類問題叫零知識證明,更深的東西還在學習中。

8樓:billliu

Alice和Bob各有乙個0到9的數,他們想要知道他們的數字是否相同,但又不能洩露給對方自己的數字,應該怎麼辦?問題並不困難。

假定Alice的數為X ,假定Bob 的數為Y。只有3種可能的狀況, X 較大,Y 較大或者X就是Y。可以這樣問問題(該問題有很多解法):

A 問問Alice,X 是否大於5?

B 問問Bob,Y 是否大於5?

如果X是6,Y 是1。問題已經解決。

如果X是2,Y 是7。問題已經解決。

如果問題未能獲得解決,繼續問關於3的問題或關於7的問題。看看問題是否已經解決。

使用二分搜尋演算法可以很好的處理這個問題。其他的好方式也很多。問題只是要求Alice或者Bob 不告訴對方自己的數是哪個數字,詢問別的問題都是可以的。

問題只是想要知道兩個數是否是相等的,任何的合理方式都是可以選用的。

9樓:

參照姚期智百萬富翁問題 ,其實並不需要第三方參與A找10個一模一樣的箱子,按照1~10的順序擺好,並按照自己的數值分別往裡面放入蘋果和香蕉:如果序號等於自己的數字,放入蘋果,不等於自己的數值,放入香蕉;

把10個盒子都上鎖;

然後換B過來,B根據自己的數值值對相應的盒子再加一把鎖。然後撕掉序號把其他所有箱子銷毀

最後A再開啟箱子就知道結果了啊

10樓:鞦韆靜

無需第三方,可以GC(乙個等式電路),同態(Bob公鑰加密b後傳送給Alice,Alice做減法並盲化後發給Bob,Bob解密即可。結果為零說明相等,否則不等)或者秘密共享上的比較協議

11樓:八里土人

有第三方還叫問題嗎?

想學習的建議去了解一下「姚氏百萬富翁問題」,華人科學家(現在清華)姚期智的名作。可以比較大小,而不是僅僅比較相同。這是乙個非常有名的密碼學問題,這個金雞後來生了金蛋,也就是當前很熱門的「多方安全計算」。

回到問題上來,用dlp,離散對數問題就可以解決。

假設兩人的數字是A和B,

給定兩個大質數(簡單點噢,都是質數不用去考慮一堆其他限制)N和P,N和P是對兩人公開的。

兩人分別對自己的數字A和B,做N次方再模P,看結果是否相同。對於大質數來說,如果結果相同,非常非常大概率A和B相同。不放心可以再來一輪。

解決方案2:(rsa解法,使用可交換性和冪屬性。還沒寫完,留坑待補)A生成RSA公私鑰對(e,d,N),

12樓:alex

給乙個有乙個不知道兩人數字的第三方的答案。

設Alice持有的數為a,Bob持有的數為b。Alice可以生成乙個隨機數 ,並令 = 。Bob用同樣的方式生成 。

Alice將 傳送給Bob,Bob將 傳送給Alice。Alice計算 , Bob計算 = 。最後雙方將 傳送給第三方。

第三方計算 即可知道a是否等於b。同時,由於 是隨機數之間計算生成的,不會洩露a和b的資訊。

13樓:停車場邊上的枯草

回答一下「有乙個不知道二人數字的第三方或沒有第三方」的情況,使用「社會主義百萬富翁協議」可以解決,參考維基百科:https://

en.wikipedia.org/wiki/S

ocialist_millionaire_problem

14樓:WYXkk

第三方 C 隨意想乙個數 x,C 把 x 的值告訴 A,A 把 x+a 的值告訴 B,B 把 x+a-b 的值告訴 C,C 檢查 x+a-b 與 x 是否相同

怎麼證明乙個矩陣收斂到0矩陣的速度大於另外乙個矩陣收斂到0矩陣的速度?

1.這個題目的表述不當。你話紅線那句話表達的不叫 趨於0的速度 尓叫做冪零的階數。2.實際上不存在你題目中描述的那種冪零矩陣。即 若A是n n的方陣,每個元素均 0,則A不冪零。這個是顯然的。因為trA 0.我們還能進一步放寬條件,如果若A是n n的方陣,每個元素均 0,其每行的和 0,則A不冪零。...

會不會有乙個公曆年的年初和年末各有乙個農曆春節?

stevenliuyi 現行農曆 夏曆 確實不會有這種情形,但歷史上其實曾出現過乙個公曆年首尾各有乙個農曆新年的現象。中國古代曆法有所謂 三正 即 周正建子 殷正建丑 夏正建寅 冬至所在的是子月,此後依次為醜月與寅月。夏正建寅 就是說以寅月為歲首,這也是自漢代太初歷 改正朔 以來兩千餘年中國農曆一直...

只用1 2 3 4 5 6 7 8 9和0寫出乙個數字,每個數隻用一次,能寫出最大的數是多少?

Huxley 顯然,在合法的運算前提下有 2 3 4 5 6 7 9 10 976543210 976543210 976543210 誰來接龍? 小滑 先按 排列,然後再在中間加上箭頭,使勁加,越多越好 想到了新辦法 2 9876541 3,這用到了超運算,2與3進行9876541階超運算,至少你...