基於中國剩餘定理的秘密共享方案 C語言實現

2021-09-29 11:46:21 字數 1300 閱讀 9542

基於中國剩餘定理的秘密共享方案,本質上是在利用模m運算。

(t,n)門限,若得到的子秘密大於等於t個,則可以恢復出原始秘密;反之則不然。那麼為什麼會是這樣的呢?

關鍵在於n>k>m,若是模乙個大於原秘密k的大數,則k就是k,算出來的結果不需要改動;而要是模乙個小於或等於原秘密k的大數m,則算出來的結果是k%m,必定小於m(從而小於k),因此這是得不到原始秘密的。

順便講一下,這裡我們給定秘密k為500位,並採用(3,5)門限。

假如有同學想推廣到一般情況,可以自己試試看,也不難。

給出(t,n)對為(3,5),並指定秘密為500位,要求我們先將秘密分解為5個子秘密(ki,di),然後再使用t個(或大於)子秘密恢復出原秘密,並驗證少於t個子秘密不能恢復出原秘密。

問題的關鍵在於如何尋找di序列?這裡指定了秘密的位數為500位和門限為(3,5),那麼我想5個200位的大素數一定滿足要求吧(前3個200位素數乘積為600位,大於500;後兩個素數乘積為400位,小於500),於是迎刃而解。

後面秘密的恢復就是簡單利用中國剩餘定理了,具體如何可以參考我前面的博文,直接拿來用就好。

這裡利用大數產生器bigdig隨機產生10個500位的大數(作為秘密)並存入檔案。

這裡從10的199次方(最小的200位數)開始尋找素數,找滿5個完成di序列的構建。

這裡使用中國剩餘定理從3個子秘密中恢復出原秘密。

這裡使用中國剩餘定理從2個子秘密中恢復出原秘密,結果當然是不能啦。

從上面可以看到,三個子秘密可以恢復出原秘密,兩個子秘密卻不能。秘密共享方案實現成功!

基於中國剩餘定理的秘密共享方案

秘密的位數 define n 5 子秘密的個數n define t 3 恢復秘密所需要的最少子秘密個數t define d digbits secret bits t secret bits t 1 2 di的位數,di的長度在b t與b t 1 之間,使n 最小的前t個數的乘積 k m 最大的前t...

中國剩餘定理的原理

一 我們先來講兩個數學定理 a b c,則有 a k b b c 如果a b c,那麼 a k b a b a b a b c c c k c k 0 二 我們設n1除以3餘2,n2除以5餘3,n3除以7餘2。我們先從n1這個角度出發,已知n1滿足除以3餘2,能不能使得n1 n2的和仍然滿足除以3餘...

中國剩餘定理的解釋!

複習下中國剩餘定理 乙個數n,求滿足n 3 2,n 5 3,n 7 2的最小數n.先從3和5,3和7,5和7的最下公倍數中找出被7,5,3除餘1的最小數,分別是15,21,70。再分別用這三個數乘以對應的餘數相加 15 2 21 3 70 2 233 最後用233 105 2.23 餘數 105為3...