dh演算法
A. 簡述DH演算法
DH組的本質是使用非對稱密鑰來加密對稱密鑰。 DH演算法過程: 1、相互產生密鑰對 2、交換公鑰 3、用對方的公鑰和自己的私鑰運行DH演算法——得到另外一個密鑰X
B. 如何改進DH演算法,使其抵禦中間人攻擊
改進DH演算法使其抵禦中間人攻擊的方法是:在途中根據需要修改它們的密文,使得A和B都不知道他們在和C共享通信。
DH演算法的缺點是沒有提供雙方身份的任何信息.。它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的密鑰。受攻擊者花費了相對多的計算資源來求解無用的冪系數而不是在做真正的工作.,沒辦法防止重演攻擊。
容易遭受中間人的攻擊,第三方C在和A通信時扮演B;和B通信時扮演A.A和B都與C協商了一個密鑰,然後C就可以監聽和傳遞通信量。
(2)dh演算法擴展閱讀:
基於原根的定義及性質,可以定義Diffie-Hellman密鑰交換演算法.該演算法描述如下:
1、有兩個全局公開的參數,一個素數q和一個整數a,a是q的一個原根。
2、假設用戶A和B希望交換一個密鑰,用戶A選擇一個作為私有密鑰的隨機數XA(XA<q),並計算公開密鑰YA=a^XA mod q。A對XA的值保密存放而使YA能被B公開獲得。類似地用戶B選擇一個私有的隨機數XB<q,並計算公開密鑰YB=a^XB mod q。B對XB的值保密存放而使YB能被A公開獲得。
3、用戶A產生共享秘密密鑰的計算方式是K = (YB)^XA mod q.同樣,用戶B產生共享秘密密鑰的計算是K = (YA)^XB mod q.這兩個計算產生相同的結果:
K = (YB)^XA mod q = (a^XB mod q)^XA mod q = (a^XB)^XA mod q = a^(XBXA) mod q = (a^XA)^XB mod q = (a^XA mod q)^XB mod q = (YA)^XB mod q 因此相當於雙方已經交換了一個相同的秘密密鑰。
C. 高分求:java實現DH演算法的代碼
http://instry.ccidnet.com/art/1077/20051102/363689_8.html
D. 什麼是DH非對稱加密演算法
DH(僅能用於密鑰分配,不能加解密數據)
非對稱加密演算法
特點:
發送方和接收方均有一個密鑰對(公鑰+私鑰),其中公鑰傳播,私鑰自己保存,不需要傳播
私鑰不需要傳播的特性解決了對稱加密演算法中密鑰傳播的困難(這個困難一般通過線下傳遞可以解決)
加密安全性極高,只用於一些電子商務網站,加解密速度遠低於對稱加密
一般情況下,為了解決非對稱加密演算法加解密速度低的問題,採用非對稱加密(使用公鑰+私鑰對對稱加密的密鑰進行加解密)+對稱加密(加解密數據)相結合的方式。
常見演算法:
DH(非對稱加密的基石)
RSA(非對稱加密的經典,除了可用於非對稱加密,也可用於數字簽名,RSA--155(512位密鑰)已被破解)
ElGamal
E. 驗證DH密鑰交換演算法
我自己寫了個DH秘鑰的demo代碼, 以前加密用過AES的加密,全套代碼寫下來太費時間又沒技術含量。
如果你需要AES的加密代碼可以留個郵箱給我。
publicclassTest1{
publicstaticfinalintP=30;//公開的大家都知道的
publicstaticfinalintG=9;//公開的大家都知道的
publicstaticvoidmain(String[]args){
Ax=newA();
intone=x.getV();
//分割A代表A這邊的系統加密one代表是給別人的值
By=newB();
inttwo=y.getV();
//B代表另外一邊加密two代表是給別人的值
System.out.println(x.getKey(two));
System.out.println(y.getKey(one));
}
}
classA{
privateinta;//自己的私有密值,不會告訴任何人
publicA(){
Randomr=newRandom(200);
a=r.nextInt();
}
publicintgetV(){
return(Test1.G^a)%Test1.P;
}
publicintgetKey(intv){
return(v^a)%Test1.P;
}
}
classB{
privateintb;//自己的私有密值,不會告訴任何人
publicB(){
Randomr=newRandom(200);
b=r.nextInt();
}
publicintgetV(){
return(Test1.G^b)%Test1.P;
}
publicintgetKey(intv){
return(v^b)%Test1.P;
}
}
F. 哪位能提供焊接六自由度機器人的DH逆運動演算法和速度控制演算法的源碼
源碼沒有,不過可以根據實際情況寫。其實說白了就是解矩陣方程組。
G. md5變形加密演算法 DHPHI
在不理解MD5演算法的前提下,豈能想改哪裡就改哪裡。很可能隨便改一個地方都會造成更多的碰撞。
其實只要加點「鹽」就可以了,干嗎要去改一個成熟的演算法呢?
你能找出加「鹽」所帶來的壞處嗎?
H. linux 密鑰交換演算法DH是不是算雙方生成了密鑰
我自己寫了個DH秘鑰的demo代碼, 以前加密用過AES的加密,全套代碼寫下來太費時間又沒技術含量。
如果你需要AES的加密代碼可以留個郵箱給我。
I. 非對稱dh的類似定理
中國餘數定理源出三國或晉朝的孫子算經,其中有一題:今有物不知其數,三三數之剩2,五五數之剩3,七七數之剩2,問物幾何?
以同餘式表之,即 解,孫子算經中給出答案 x=23
一元一次聯立同餘式,後世稱為大衍,其解法稱為大衍求一術,到宋代秦九韶(1202~1261年)集大成同餘中的一些定理。 我們再來看看DH是怎麼計算出共享密鑰的:
以下各試「=」均讀作同餘,且假定A和B生成的g和p均相同,至於為什麼這里就不做討論了
首先A先計算X = g^a mod p
B 計算Y= g^b mod p
然後A和B交換X和Y
這樣A就得到了Y,通過通余定理:
因為Y= g^b mod p
所以Y^a=(g^b)^a mod p
=g^(ba) mod p
同理 B計算出: X^b=g^(ab) mod p
顯然,這里Y^a=X^b
也就是說A和B計算出一個只有他們知道的相同的共享密鑰了。
當然如果有個第三者他只知道X、Y,他在有限的時間內是算不出a和b的,至於為什麼,因為我不是數學家所以我也不知道(上面的公式也是我想了n久才想通的)。
以上就是我對DH演算法的一些總結,希望這些東西對大家理解IPsec VPN有所幫助。
註:通余定理的公式符號表示的不完整,大家容易產生誤解,改後:
如果Y= g^b mod p(就是Y mod p = g^b mod p)
那麼Y^a= (g^b)^a mod p (就是Y^a mod p = (g^b)^a mod p)
這樣就沒問題了。