本發(fā)明涉及計算機加密技術(shù)領(lǐng)域,特別是涉及一種安全的數(shù)據(jù)匹配方法及其系統(tǒng)。
背景技術(shù):
在現(xiàn)實生活中,經(jīng)常出現(xiàn)兩個網(wǎng)站基于共同的注冊賬號(比如電子郵件、手機號)進行第三方登錄或聯(lián)合推廣的情況。這就要求雙方能夠求得注冊賬號的交集。在求取交集的過程中,雙方都不能將自己的全量數(shù)據(jù)給到對方。常用的方法是借助可信第三方,雙方均將全量數(shù)據(jù)提交給第三方,由第三方求取交集后返回給雙方。這會產(chǎn)生多個問題:
1、使用可信第三方的服務(wù)將產(chǎn)生較大的經(jīng)濟成本。
2、雙方的全量數(shù)據(jù)均提交給了第三方,有泄露的風(fēng)險。
3、第三方可能利用雙方的數(shù)據(jù)進行分析并用于其他場合。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,設(shè)計出一種安全的數(shù)據(jù)匹配方法及其系統(tǒng)。
為達到上述目的,本發(fā)明所采用的技術(shù)方案是:
一種安全的數(shù)據(jù)匹配方法,該方法直接發(fā)生在需要數(shù)據(jù)交換的雙方a和b,a和b雙方先對各自編號的待交換原始數(shù)據(jù)進行哈希運算,再分別通過運算各自生成一個秘鑰,哈希運算后的結(jié)果數(shù)據(jù)經(jīng)過a、b交叉的兩輪模冪運算之后得到的值若相等,則可以判定該值所對應(yīng)的原始數(shù)據(jù)相等,最后各自通過編號得到匹配的原始數(shù)據(jù)。
進一步地,方法包括如下詳細(xì)步驟:
第一步,原始數(shù)據(jù)編號并進行哈希運算,a和b雙方分別將各自所擁有的原始數(shù)據(jù)進行逐條編號,再分別對各自編號的原始數(shù)據(jù)逐條進行哈希運算,a、b雙方進行哈希運算所采用的哈希算法相同,所述的原始數(shù)據(jù)即為待匹配的數(shù)據(jù),哈希運算得到的數(shù)據(jù)為哈希數(shù)據(jù);
第二步,生成秘鑰,a、b雙方協(xié)商選定兩個1024位的質(zhì)數(shù)p和q,計算n=p*q,a、b再分別獨自選定一個1024位的整數(shù)d1、d2作為密鑰,使d1、d2與(p-1)*(q-1)互質(zhì),并分別將秘鑰各自保存下來;
第三步,交叉運算,a和b分別利用第一步得到的哈希數(shù)據(jù)和秘鑰進行第一輪模冪運算,并將計算出的結(jié)果發(fā)送給對方,a和b再利用接收到的對方第一輪模冪運算結(jié)果和各自秘鑰進行第二輪模冪運算,再將第二輪模冪運算的結(jié)果進行哈希運算,a、b各自哈希運算的結(jié)果保存在本地并發(fā)送給對方;
第四步,數(shù)據(jù)比對,a和b分別將第三步中哈希運算得到的本地數(shù)據(jù)和接收到的對方數(shù)據(jù)進行比對,若值相等,則表示該值對應(yīng)的待匹配的原始數(shù)據(jù)相等;
第五步,a、b雙方分別從其各自的數(shù)據(jù)集中獲取第四步得到的相等的原始數(shù)據(jù)。
進一步地,所述第一步中的哈希算法為sha3。
進一步地,所述第二步中的p和q為不相同的兩個大質(zhì)數(shù)。
進一步地,所述第三步中的交叉運算分為四個分步驟:
步驟5.1:a和b分別進行第一輪模冪運算:h**d≡c1modn,其中**表示乘方運算,h表示第一步得到的哈希數(shù)據(jù),d表示a、b各自持有的密鑰,即第二步中的d1和d2,n是第二步中p*q計算得到的數(shù)值;
步驟5.2:a和b分別將第一輪模冪運算中計算出來的數(shù)據(jù)c1發(fā)送給對方;
步驟5.3:a和b再收到對方發(fā)送的數(shù)據(jù)c1后,分別進行第二輪模冪運算:c1**d≡c2modn,其中d表示a、b各自持有的密鑰,即第二步中的d1和d2,n是第二步中p*q計算得到的數(shù)值;
步驟5.4:a和b分別將第二輪模冪運算中計算出來的c2再一次進行哈希運算,并分別將運算結(jié)果保存在本地并發(fā)送給對方。
一種安全的數(shù)據(jù)匹配系統(tǒng),所述該數(shù)據(jù)匹配系統(tǒng)包括進行數(shù)據(jù)匹配的參與方a和b,所述參與方a包括數(shù)據(jù)輸入單元,用于輸入a的待匹配數(shù)據(jù),所述待匹配數(shù)據(jù)為數(shù)據(jù)庫數(shù)據(jù)或csv文件;
數(shù)據(jù)編號單元,用于對數(shù)據(jù)輸入單元中存儲的a的用戶數(shù)據(jù)進行逐條編號;
數(shù)據(jù)哈希單元,用于對帶有編號的a的用戶數(shù)據(jù)進行哈希運算,得到a的哈希數(shù)據(jù);
密鑰協(xié)商單元,用于協(xié)商出a和b共同所用的大質(zhì)數(shù),并獨立選定出一個運算密鑰;
模冪運算本地單元,用于對a的哈希數(shù)據(jù)進行第一輪模冪運算,并將模冪運算后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給對方的模冪運算遠(yuǎn)程單元;
模冪運算遠(yuǎn)程單元,用于將從對方的模冪運算本地單元接收到的數(shù)據(jù)進行第二輪模冪運算,再將第二輪模冪運算的結(jié)果進行哈希運算,a將哈希運算的結(jié)果保存在本地并發(fā)送給對方;
結(jié)果處理單元,用于匹配本地數(shù)據(jù)和從對方的模冪運算遠(yuǎn)程單元接收的數(shù)據(jù),得到交集數(shù)據(jù);
數(shù)據(jù)編號還原單元,用于根據(jù)交集數(shù)據(jù)攜帶的編號,在自己的用戶數(shù)據(jù)中對應(yīng)查找出該編號對應(yīng)的原始數(shù)據(jù);
數(shù)據(jù)輸出單元,用于輸出數(shù)據(jù)編號還原單元查找到的原始數(shù)據(jù);所述參與方b的結(jié)構(gòu)與參與方a的結(jié)構(gòu)相同。
一種安全的數(shù)據(jù)匹配系統(tǒng),其特征在于,所述該數(shù)據(jù)匹配系統(tǒng)包括進行數(shù)據(jù)匹配的參與方a和b,所述參與方a包括數(shù)據(jù)輸入單元,用于輸入a的待匹配數(shù)據(jù),所述待匹配數(shù)據(jù)為數(shù)據(jù)庫數(shù)據(jù)或csv文件;
數(shù)據(jù)編號單元,用于對數(shù)據(jù)輸入單元中存儲的a的用戶數(shù)據(jù)進行逐條編號;
數(shù)據(jù)哈希單元,用于對帶有編號的a的用戶數(shù)據(jù)進行哈希運算,得到a的哈希數(shù)據(jù);
硬件token,用于協(xié)商出a和b共同所用的大質(zhì)數(shù),并獨立選定出一個運算密鑰。然后對a的哈希數(shù)據(jù)進行第一輪模冪運算,將模冪運算后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給對方的硬件token并通過網(wǎng)絡(luò)從對方的硬件token中接收對方第一輪模冪運算后的數(shù)據(jù),最后,將從對方的硬件token中接收到的數(shù)據(jù)進行第二輪模冪運算,再將第二輪模冪運算的結(jié)果進行哈希運算,a將哈希運算的結(jié)果保存在本地并發(fā)送給對方;
結(jié)果處理單元,用于匹配本地數(shù)據(jù)和從對方的硬件token接收的數(shù)據(jù),得到交集數(shù)據(jù);
數(shù)據(jù)編號還原單元,用于根據(jù)交集數(shù)據(jù)攜帶的編號,在自己的用戶數(shù)據(jù)中對應(yīng)查找出該編號對應(yīng)的原始數(shù)據(jù);
數(shù)據(jù)輸出單元,用于輸出數(shù)據(jù)編號還原單元查找到的原始數(shù)據(jù);所述參與方b的結(jié)構(gòu)與參與方a的結(jié)構(gòu)相同。
本發(fā)明的積極有益效果:本發(fā)明的數(shù)據(jù)匹配方法不需要借助第三方,a和b可以通過雙方共同協(xié)商的密鑰,直接在兩者之間完成數(shù)據(jù)匹配的工作;且在數(shù)據(jù)匹配過程中,可以保證雙方的數(shù)據(jù)安全;在數(shù)據(jù)匹配完成后,各自僅能獲取成功匹配的交集數(shù)據(jù),卻無法知曉交集之外的任何數(shù)據(jù);且抗特殊數(shù)字攻擊能力強。
附圖說明
圖1為本發(fā)明的數(shù)據(jù)匹配系統(tǒng)的結(jié)構(gòu)示意圖之一。
圖2為本發(fā)明的數(shù)據(jù)匹配系統(tǒng)的結(jié)構(gòu)示意圖之二。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明了,下面通過附圖中示出的具體實施例來描述本發(fā)明。但是應(yīng)該理解,這些描述只是示例性的,而并非要限制本發(fā)明的范圍。此外,在以下說明中,省略了對公知結(jié)構(gòu)和技術(shù)的描述,以避免不必要地混淆本發(fā)明的概念。
實施例一,結(jié)合圖1說明本實施方式,本發(fā)明的安全的數(shù)據(jù)匹配方法,直接發(fā)生在需要進行數(shù)據(jù)交換的參與方a和b,本發(fā)明包括以下步驟:
首先,參與方a對其擁有的數(shù)據(jù)集t1中的每條數(shù)據(jù)進行編號,參與方b對其擁有的數(shù)據(jù)集t2中的每條數(shù)據(jù)進行編號;
令數(shù)據(jù)集t1={t11,t12,t13,…},其中t11,t12,t13,…為數(shù)據(jù)集t1中的數(shù)據(jù),m1={m1|m1為t的唯一編號,t∈t1},a擁有的數(shù)據(jù)集t1中的每一條數(shù)據(jù)t1對應(yīng)著唯一的編號m1;
數(shù)據(jù)集t2={t21,t22,t23,…},其中t21,t22,t23,…為第二匹配數(shù)據(jù)集合中的數(shù)據(jù),m2={m2|m2為t的唯一編號,t∈t2},b擁有的數(shù)據(jù)集t2中的每一條數(shù)據(jù)t2對應(yīng)著唯一的編號m2。
然后,a對數(shù)據(jù)集t1中的每條帶有編號的數(shù)據(jù)進行哈希運算得到數(shù)據(jù)集h1,數(shù)據(jù)集h1={h|h=hash(t),t∈t1};b對數(shù)據(jù)集t2中的每條帶有編號的數(shù)據(jù)進行哈希運算得到數(shù)據(jù)集h2,數(shù)據(jù)集h2={h|h=hash(t),t∈t2};其中hash算法可取sha3。
a和b共同協(xié)商生成密鑰,具體步驟為:a和b協(xié)商確定兩個1024位的大質(zhì)數(shù)p和q,令n=p*q;a和b分別選定一個與(p-1)*(q-1)互質(zhì)的整數(shù)d1、d2,d1和d2也為1024位,a保存d1,b保存d2,所述p和q為不相同的兩個大質(zhì)數(shù);
然后,a和b之間進行兩輪交叉的模冪運算,具體步驟為:a根據(jù)n、d1對數(shù)據(jù)集h1中的數(shù)據(jù)進行模冪運算h1**d1≡c1modn,得到c1,并將數(shù)集(m1,c1)傳輸給b,m1為數(shù)據(jù)集t1中的數(shù)據(jù)所對應(yīng)的編號;
b根據(jù)n、d2對數(shù)據(jù)集h2中的數(shù)據(jù)進行模冪運算h2**d2≡c2modn,得到c2,并將數(shù)集(m2,c2)傳輸給a,m2為數(shù)據(jù)集t2中的數(shù)據(jù)所對應(yīng)的編號;
步驟2.3:a對接收到的數(shù)集(m2,c2)進行模冪運算c2**d1≡f1modn,得到帶有編號m2的f1,并對f1進行哈希運算,得到g1,此時的g1攜帶有編號m2,a對(m2,g1)進行保存并傳輸給b;
b對接收到的數(shù)集(m1,c1)進行模冪運算c1**d2≡f2modn,得到帶有編號m1的f2,并對f2進行哈希運算,得到g2,此時的g2攜帶有編號m1,b對(m1,g2)進行保存并傳輸給a;
此時,a中存儲有(m2,g1)和(m1,g2),a對(m2,g1)和(m1,g2)求交集,判斷(m1,g2)中是否存在g1與g2相同,若存在g1與g2相同,那么該g2攜帶的編號m1所對應(yīng)的數(shù)據(jù)t1即為a和b待匹配的數(shù)據(jù);b中也存儲有(m2,g1)和(m1,g2),b對(m2,g1)和(m1,g2)求交集,判斷(m2,g1)中是否存在g1與g2相同,若存在g1與g2相同,那么該g1攜帶的編號m2所對應(yīng)的數(shù)據(jù)t2即為a和b待匹配的數(shù)據(jù)。
本發(fā)明的安全的數(shù)據(jù)匹配系統(tǒng)進行數(shù)據(jù)匹配的參與方a和b,所述參與方b的結(jié)構(gòu)與參與方a的結(jié)構(gòu)相同。參與方a和b均包括包括數(shù)據(jù)輸入單元、數(shù)據(jù)編號單元、數(shù)據(jù)哈希單元、密鑰協(xié)商單元、模冪運算本地單元、模冪運算遠(yuǎn)程單元、結(jié)果處理單元、數(shù)據(jù)編號還原單元和數(shù)據(jù)輸出單元。
所述數(shù)據(jù)輸入單元,用于輸入a、b的待匹配數(shù)據(jù),所述待匹配數(shù)據(jù)為數(shù)據(jù)庫數(shù)據(jù)或csv文件;
具體地,數(shù)據(jù)輸入單元11和數(shù)據(jù)輸入單元21分別從參與者a和參與者b的數(shù)據(jù)集中讀取數(shù)據(jù)用戶數(shù)據(jù),輸入的數(shù)據(jù)可以是數(shù)據(jù)庫,也可以是csv文件,輸入的用戶數(shù)據(jù)按照一定的編碼方式變換成一條一條的數(shù)據(jù)。
比如需要匹配的數(shù)據(jù)由用戶的電子郵件和手機號組成,則用字符串連接的方式連接起來,原來兩條記錄user@user.com和13988889999合并為一條user@user.com-13988889999,參與者a和參與者b采用相同的編碼方法。
通過這樣的編碼變換,每個參與者的用戶數(shù)據(jù)都變成了一條條的數(shù)據(jù)記錄t。假設(shè)參與者a從數(shù)據(jù)輸入單元11產(chǎn)生的數(shù)據(jù)集是t1={t11,t12,t13,…},參與者b從數(shù)據(jù)輸入單元21產(chǎn)生的數(shù)據(jù)集是t2={t21,t22,t23,…}。
數(shù)據(jù)編號單元,用于對數(shù)據(jù)輸入單元中存儲的a、b的用戶數(shù)據(jù)進行逐條編號;
具體地,比如從參與者a的數(shù)據(jù)集t1拿取一條數(shù)據(jù)t11,對t11進行編號,假設(shè)編號是m11,編號m11可以是用任意的編碼方法得到的,用來唯一標(biāo)識t11在t1中的位置,這個編號本身不能反應(yīng)出t11這條數(shù)據(jù)的內(nèi)容,最簡單的編號方法是按照數(shù)據(jù)輸入的順序,用一個整數(shù)遞增的序列來表示,第一條數(shù)據(jù)的編號是1,第二條數(shù)據(jù)的編號是2,以此類推。這樣,數(shù)據(jù)輸入單元里面的數(shù)據(jù)一條一條經(jīng)過數(shù)據(jù)編號單元的處理之后,數(shù)據(jù)集就變成了編號對。參與者a和參與者b的數(shù)據(jù)各自編號,各不相關(guān)。
假設(shè)參與者a通過數(shù)據(jù)編號單元21進行編號得到數(shù)據(jù)集是m1={(m11,t11),(m12,t12),(m13,t13)….m表示編號,t表示數(shù)據(jù)},參與者b通過數(shù)據(jù)編號單元22進行編號得到數(shù)據(jù)集m2={(m21,t21),(m22,t22),(m23,t23)….m表示編號,t表示數(shù)據(jù)}。
數(shù)據(jù)哈希單元,用于對帶有編號的a的用戶數(shù)據(jù)進行哈希運算,得到a的哈希數(shù)據(jù);
假設(shè)參與者a的數(shù)據(jù)集m1的一條數(shù)據(jù)t11對應(yīng)的哈希運算sha3(t11)的結(jié)果是h11,h11=sha3(t11),h12=sha3(t12),以此類推,這樣數(shù)據(jù)編號對就變成了(m11,h11),(m12,h12)….。這樣可以得到參與者a的數(shù)據(jù)經(jīng)過數(shù)據(jù)哈希單元13的結(jié)果數(shù)據(jù)集為h1={(m11,h11),(m12,h12),(m13,h13)….},參與者b經(jīng)過數(shù)據(jù)哈希單元23的結(jié)果數(shù)據(jù)集為h2={(m21,h11),(m22,h22),(m23,h23)….}。
密鑰協(xié)商單元,用于協(xié)商出a和b共同所用的大質(zhì)數(shù),并各自獨立得出密鑰;
具體地,假設(shè)參與者a和參與者b各自選定一個英語短語,比如a1和a2,通過網(wǎng)絡(luò)互相發(fā)給對方,在收到對方的短語后拼接起來,得到a1a2,這個拼接短語作為生成算法的種子。由于參與者一和參與者二采用同樣的算法,用同樣的短語能夠得到共同的素數(shù)p和q。在該實施例里我們采用的p和q均是1024位的素數(shù)。參與方a和參與方b雙方協(xié)商得到素數(shù)p和q后,參與方a計算大數(shù)n=p*q和大數(shù)r=(p-1)*(q-1),這兩個數(shù)用來生產(chǎn)下面用到的密鑰。參與方a選定一個1024位的整數(shù)d1,使得d1和r互素。
參與方b通過同樣的算法可以選定出d2。這樣,結(jié)果就是參與雙方各自選定一個整數(shù)d1、d2(均為1024位),使d1、d2與r互質(zhì),各自保密存儲d1、d2和大整數(shù)n。
模冪運算本地單元,用于對a的哈希數(shù)據(jù)進行第一輪模冪運算,并將模冪運算后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給對方的模冪運算遠(yuǎn)程單元;
模冪運算本地模塊15從數(shù)據(jù)集中h1={(m11,h11),(m12,h12),(m13,h13)….}中取出數(shù)據(jù)對(m11,h11),對h11進行計算h1**d1≡c11modn,最終結(jié)果是c11。依次對h1中的數(shù)據(jù)對進行模冪運算,得到c12,c13….,這樣參與者a經(jīng)過模冪運算本地單元產(chǎn)生的數(shù)據(jù)集是l1={(m11,c11),(m12,c12),(m13,c13)….}。然后將得到的數(shù)據(jù)集l1通過網(wǎng)絡(luò)s2發(fā)送給參與者b的模冪運算遠(yuǎn)程單元26,等候下一步操作。
按照同樣的過程,參與者b的模冪運算本地模塊25對數(shù)據(jù)集h2={(m21,h11),(m22,h22),(m23,h23)….}中的數(shù)據(jù)依次進行模冪運算,得到新的數(shù)據(jù)集l2={(m21,c21),(m22,c22),(m23,c23)….}。然后將數(shù)據(jù)集l2通過網(wǎng)絡(luò)s3發(fā)送給參與者一的模冪運算遠(yuǎn)程單元16,等候下一步操作。
模冪運算遠(yuǎn)程單元,用于將從對方的模冪運算本地單元接收到的數(shù)據(jù)進行第二輪模冪運算,再將第二輪模冪運算的結(jié)果進行哈希運算,a將哈希運算的結(jié)果保存在本地并發(fā)送給對方;
模冪運算遠(yuǎn)程單元16從l2中取出數(shù)據(jù)對(m21,c21),對c21進行計算c21**d1≡f21modn,最終結(jié)果是f21。然后再對f21進行哈希運算,我們使用sha3哈希函數(shù),得到g21=sha3(f21)。依次對l2中的數(shù)據(jù)進行運算,這樣經(jīng)過參與者一的模冪運算遠(yuǎn)程單元16得到新的數(shù)據(jù)集g2={(m21,g21),(m22,g22),(m23,g23)….}。然后將數(shù)據(jù)集g2通過網(wǎng)絡(luò)s4發(fā)送給參與者二的結(jié)果處理單元27,同時也在本地路徑s6保存一份。
按照同樣的過程,參與者b的模冪運算遠(yuǎn)程單元26對數(shù)據(jù)集l1={(m11,c11),(m12,c12),(m13,c13)….}中的元素一次進行模冪運算和sha3哈希運算,得到新的數(shù)據(jù)集g1={(m11,g11),(m12,g12),(m13,g13)….},然后通過網(wǎng)絡(luò)s5發(fā)送給參與者一的結(jié)果處理單元17,同時也在本地路徑s7保存一份。
結(jié)果處理單元,用于匹配本地數(shù)據(jù)和從對方的模冪運算遠(yuǎn)程單元接收的數(shù)據(jù),得到交集數(shù)據(jù);
參與者a的結(jié)果處理單元17用到通過網(wǎng)絡(luò)s5傳過來的數(shù)據(jù)集g1={(m11,g11),(m12,g12),(m13,g13)….}和本地s6存儲的g2={(m21,g21),(m22,g22),(m23,g23)….},其中,m表示編號,g是數(shù)據(jù)。參與者b的結(jié)果處理單元27用到通過網(wǎng)絡(luò)s4傳過來的數(shù)據(jù)集g2={(m21,g21),(m22,g22),(m23,g23)….}和本地s7存儲的g1={(m11,g11),(m12,g12),(m13,g13)….}。參與者a和參與者b此時擁有相同的數(shù)據(jù)集g1和g2。
參與者a的結(jié)果處理單元17提取g1中的數(shù)據(jù)分量,得到g1’={g11,g12,g13….},同樣提取g2中的數(shù)據(jù)分量,得到g2’={g21,g22,g23….}。然后對g1’和g2’進行求交集操作,可以得到新的數(shù)據(jù)集g={g1,g2,g3...},這個數(shù)據(jù)集中的數(shù)據(jù)在g1’和g2’中同時出現(xiàn),即交集。
按照同樣的過程,參與者b的結(jié)果處理單元27對g1和g2進行操作,能夠得到同樣的數(shù)據(jù)集g={g1,g2,g3...}。
數(shù)據(jù)編號還原單元,用于根據(jù)交集數(shù)據(jù)攜帶的編號,在自己的用戶數(shù)據(jù)中對應(yīng)查找出該編號對應(yīng)的原始數(shù)據(jù);
數(shù)據(jù)編號還原單元18獲取數(shù)據(jù)交集g={g1,g2,g3...}之后,可以從g1數(shù)據(jù)集中查到g1、g2、g3..對應(yīng)的數(shù)據(jù)編號m1,m2,m3...因為g1中的編號數(shù)據(jù)是在數(shù)據(jù)編號單元12中產(chǎn)生的,所以,根據(jù)這些編號,可以從第二步中的數(shù)據(jù)集m1={(m11,t11),(m12,t12),(m13,t13)….}找到原始編碼的數(shù)據(jù)集t={t1,t2,t3….}。
按照同樣的過程,數(shù)據(jù)編號還原單元28獲取數(shù)據(jù)交集g之后,能得到同樣的原始編碼數(shù)據(jù)集t={t1,t2,t3….}。
數(shù)據(jù)輸出單元,用于輸出數(shù)據(jù)編號還原單元查找到的原始數(shù)據(jù)。
數(shù)據(jù)輸出單元19和數(shù)據(jù)輸出單元29在獲取數(shù)據(jù)交集t={t1,t2,t3….}之后,根據(jù)數(shù)據(jù)輸入單元11和21的編碼,采取反向操作,就可以根據(jù)t中的元素輸出原始用戶匹配數(shù)據(jù),最終結(jié)果可以輸出到數(shù)據(jù)庫或者文件中。
實施例二,參見圖2,本發(fā)明的安全的數(shù)據(jù)匹配系統(tǒng)包括進行數(shù)據(jù)匹配的參與方a和b,參與方b的結(jié)構(gòu)與參與方a的結(jié)構(gòu)相同。所述參與方a包括數(shù)據(jù)輸入單元、數(shù)據(jù)編號單元、數(shù)據(jù)哈希單元、硬件token、結(jié)果處理單元、數(shù)據(jù)編號還原單元和數(shù)據(jù)輸出單元。其中,數(shù)據(jù)輸入單元、數(shù)據(jù)編號單元、數(shù)據(jù)哈希單元、結(jié)果處理單元、數(shù)據(jù)編號還原單元、數(shù)據(jù)輸出單元的作用與實施例一相同,具體不再贅述。
所述硬件token用來替換實施例一中的密鑰協(xié)商單元、模冪運算本地單元、模冪運算遠(yuǎn)程單元。硬件token可以進行速度優(yōu)化,并隱藏秘鑰,可以提高本發(fā)明系統(tǒng)的安全性。所述硬件token,用于協(xié)商出a和b共同的運算密鑰,然后對a的哈希數(shù)據(jù)進行第一輪模冪運算,并將模冪運算后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給對方的硬件token并從對方的硬件token中接收對方第一次模冪運算后的數(shù)據(jù),最后,將從對方的硬件token中接收到的數(shù)據(jù)進行第二輪模冪運算,再將第二輪模冪運算的結(jié)果進行哈希運算,a將哈希運算的結(jié)果保存在本地并發(fā)送給對方。
本實施例中,在對密鑰進行協(xié)商的過程中,參與方a和參與方b必須用同一個批次的token。同一個批次的token用相同的隨機短語初始化,里面生成密鑰d和大整數(shù)n,后面的模塊可以利用token中內(nèi)置的密鑰,同時,token具有一個運算單元,可以將把大整數(shù)數(shù)據(jù)輸入h進行運算h**d≡fmodn,輸出大整數(shù)f,這個硬件接口帶一定的緩存,可以進行批量大整數(shù)數(shù)據(jù)的運算,輸入批量大整數(shù)的結(jié)果。
最后應(yīng)當(dāng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解;依然可以對本發(fā)明的具體實施方式進行修改或者對部分技術(shù)特征進行等同替換;而不脫離本發(fā)明技術(shù)方案的精神,其均應(yīng)涵蓋在本發(fā)明請求保護的技術(shù)方案范圍當(dāng)中。