999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Java點(diǎn)對點(diǎn)通信技術(shù)的DES密鑰交換

2012-04-29 08:45:24汪志達(dá)
計(jì)算機(jī)時(shí)代 2012年11期

汪志達(dá)

摘要: 介紹了使用Java的點(diǎn)對點(diǎn)通信技術(shù),基于Diffie-Hellman規(guī)則,給出了IBM DES密鑰交換的總體方案、算法和應(yīng)用程序,詳細(xì)說明了其中涉及的主要技術(shù)和方法,同時(shí)給出了在PC機(jī)上用二進(jìn)制指數(shù)分解法實(shí)現(xiàn)大數(shù)模運(yùn)算的算法分析和實(shí)現(xiàn)方案。

關(guān)鍵詞: 密鑰交換; Java; DES; Diffie-Hellman

中圖分類號:TP301.6;311.11文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2012)11-23-03

Interchange of DES cipher key based on Java p2p communication technology

Wang Zhida

(Ningbo Polytechnic, Ningbo, Zhejiang 315800, China)

Abstract: The scheme, module, and application program of IBM DES cipher key interchange by Diffie-Hellman rules based on Java P2P communication technology are introduced. The related techniques and methods in detail are explained. The module analysis and the implementation scheme of calculating large figure modulus on PC with binary index decomposing method are given.

Key words: cipher key interchange; Java; DES; Diffie-Hellman

0 引言

在IBM DES加密傳輸應(yīng)用中,如果是首次通信或密鑰已過期,則需要進(jìn)行Diffie-Hellman密鑰交換[6]。本文使用Java的點(diǎn)對點(diǎn)通信技術(shù)和二進(jìn)制指數(shù)分解法[1]設(shè)計(jì)Diffie-Hellman密鑰交換應(yīng)用程序,如圖1、圖2所示。

圖1密鑰交換服務(wù)端

圖2密鑰交換客戶端

密鑰交換雙方運(yùn)行各自的程序,一方以客戶機(jī)方式連接另一方(服務(wù)端),設(shè)定任意的初始值(Diffie-Hellman運(yùn)算指數(shù)),系統(tǒng)計(jì)算并交換密鑰種子,生成初始密鑰,經(jīng)DES系數(shù)和DES模數(shù)處理后得到DES密鑰。

1 算法

1.1 算法概要

密鑰交換過程如圖3所示。

[設(shè)定

初始值m][密鑰

k=f2(N,m)][

密鑰

交換

程序

][公共通信網(wǎng)絡(luò)] [

密鑰

交換

程序

][密鑰種子

M=f1(m)][接收N][設(shè)定

初始值n][密鑰

k'=f2(M,n)][密鑰種子

N=f1(n)][接收M]

圖3密鑰交換過程

程序預(yù)設(shè)兩個(gè)Diffie-Hellman運(yùn)算基數(shù)p和q(大于80位二進(jìn)制),程序運(yùn)行時(shí),交換雙方分別設(shè)定運(yùn)算指數(shù)m/n(大于20位二進(jìn)制),程序用Diffie-Hellman算法[5]計(jì)算密鑰種子:

M=pm mod q

N=pn mod q

程序交換M/N后,計(jì)算密鑰:

k=Nm mod q

k'=Mn mod q

根據(jù)模運(yùn)算的性質(zhì):

(pn mod q)m mod q=pnm mod q=pmn mod q=(pm mod q)n mod q

所以:

k=k'

1.2 算法設(shè)計(jì)

由于pm、pn以及Nm、Mn這樣的大數(shù),已遠(yuǎn)遠(yuǎn)超出了現(xiàn)有計(jì)算機(jī)處理數(shù)據(jù)的范圍,本文用二進(jìn)制指數(shù)分解法進(jìn)行計(jì)算,概括如下(設(shè)要計(jì)算PD mod Q):

將D轉(zhuǎn)換成二進(jìn)制數(shù)B(設(shè)為bnbn-1…b1b0),各位從右到左依次存入bi(i=0,1,2,...,n,bi=0或1),得到D的分解式:

bn×2n+bn-1×2n-1+......+b1×21+b0×20

式中各項(xiàng)從右到左依次存入di(i=0,1,2,...,n),得到PD的分解式:

按照模運(yùn)算的規(guī)律,若數(shù)列(x=0,1,2,...,n)中大于Q的最小元素是(0≤t≤n),且 mod Q=T,則:

mod Q

等價(jià)于

mod Q

在程序中可使用循環(huán),逐步減小PD分解式中指數(shù)較大的項(xiàng),同時(shí),利用模運(yùn)算的如下性質(zhì)[3]:

(X*Y*Z) mod Q=(((X*Y) mod Q)*Z) mod Q

得到算式PD mod Q中PD的可計(jì)算等價(jià)數(shù)(設(shè)為A),然后計(jì)算A mod Q的結(jié)果。

1.3 算法實(shí)現(xiàn)

按照上述算法,用Java實(shí)現(xiàn)如下:

import java.io.*;

public class clfm

{public static void main(String args[]) throws Exception

{long p=2000000001,d=9223372036854775807L,

q=2147483647,t,result,temp;

int i,j,k,n;

long data[][]=new long[200][2];

System.out.println("");

/*多項(xiàng)式轉(zhuǎn)換*/

i=1; j=0;

do

{t=d%2*i;

if(t!=0) /*data[j][0]存底數(shù),data[j][1]存指數(shù)*/

{data[j][0]=p; data[j][1]=t; j++;

}

i=i*2; d=d/2;

} while(d!=0); j--;

/*多項(xiàng)式化簡*/

result=1;

temp=p; /*data[j][0]存底數(shù),data[j][1]存指數(shù)*/

while(true)

{i=1;

while((((long)i)<=data[j][1])&&(userPow(temp,i)

i=i*2;

if(((long)i)>data[j][1])

break; /*在數(shù)列p2i中找大于q的最小元素*/

else

{for(n=0;data[n][0]!=temp;n++);

for(;data[n][1]<((long)i);n++);

temp=userPow(temp,i)%q;

for(k=n; k<=j; k++) /*將本次化簡的結(jié)果依次存入二維

數(shù)組中*/

{data[k][0]=temp; data[k][1]=data[k][1]/i;

}

}

}

for(i=1;i<=j;i++) /*變累乘后模除q為每乘一次就模除q*/

{data[i][0]=(data[i-1][0]*data[i][0])%q;

}

result=data[j][0];

System.out.println(String.valueOf(result));

}

/*自定義冪運(yùn)算函數(shù)*/

public static long userPow(long uPtemp,long uPi)

{long uPresult=1;

for(int uPk=1; uPk<=uPi; uPk++)

uPresult*=uPtemp;

return uPresult;

}

}

2 應(yīng)用程序設(shè)計(jì)

程序組成結(jié)構(gòu)如圖4所示。

2.1 服務(wù)端/客戶端程序設(shè)計(jì)

分別設(shè)計(jì)服務(wù)端和客戶端程序,使用Java的點(diǎn)對點(diǎn)通信技術(shù)[4]實(shí)現(xiàn)密鑰交換。程序運(yùn)行后,服務(wù)器在指定端口捕捉客戶機(jī)的連接請求,客戶機(jī)連接到服務(wù)器后雙方建立Socket類型的連接通道。雙方各自設(shè)定Diffie-Hellman運(yùn)算指數(shù),發(fā)送密鑰種子,程序利用Socket通道的即時(shí)特性,實(shí)時(shí)接收對方的密鑰種子。在檢測到已發(fā)送了本方的密鑰種子和接收了對方的密鑰種子后,程序自動(dòng)計(jì)算密鑰。設(shè)計(jì)要點(diǎn)如下:

⑴ 服務(wù)端程序在指定端口(本文使用4000端口)建立ServerSocket連接服務(wù),捕捉客戶端的Socket連接請求,建立點(diǎn)對點(diǎn)的連接通道,創(chuàng)建基于通道的輸入輸出流;接收客戶端的密鑰種子;根據(jù)設(shè)定的Diffie-Hellman運(yùn)算指數(shù)計(jì)算本地密鑰種子,通過輸出流發(fā)送;最后根據(jù)客戶端的密鑰種子和運(yùn)算指數(shù)計(jì)算密鑰。

⑵ 客戶端程序在指定端口請求服務(wù)端的Socket連接,建立點(diǎn)對點(diǎn)的連接通道,創(chuàng)建基于通道的輸入輸出流;接收服務(wù)端的密鑰種子;根據(jù)設(shè)定的Diffie-Hellman運(yùn)算指數(shù)計(jì)算本地密鑰種子,通過輸出流發(fā)送;最后根據(jù)服務(wù)端的密鑰種子和運(yùn)算指數(shù)計(jì)算密鑰。

[項(xiàng)目\&名稱\&KeyInterchange(服務(wù)端)

KeyInterchange2(客戶端)\&][主類\&名稱\&KIserver(服務(wù)端)

KIclient(客戶端)\&功能\&含有作為程序入口的

main方法;

創(chuàng)建用戶窗體類的對象。\&][用戶窗體類\&名稱\&MyFrame\&功能\&設(shè)計(jì)有jbInit等方法;

界面設(shè)計(jì);

網(wǎng)絡(luò)連接;

密鑰交換等。\&][用戶自定義類模塊\&名稱\&ClfmClass\&功能\&提供clfm方法;

采用二進(jìn)制指數(shù)分解法進(jìn)行大數(shù)模運(yùn)算。\&]

圖4程序組成結(jié)構(gòu)

2.2 模塊化算法程序

將算法程序制作成方法:

long clfm(long, long, long)

定義在類模塊ClfmClass中,如下:

import java.io.*;

public class ClfmClass {

public static long clfm(long p,long d,long q) throws Exception

{long t,result,temp;

int i,j,k,n;

long data[][]=new long[200][2];

(……)

return result;

}

public static long userPow(long uPtemp,long uPi)

{

(……)

}

}

3 結(jié)束語

本文通過程序?qū)崿F(xiàn)了點(diǎn)對點(diǎn)密鑰交換,該軟件在Internet/Intranet及單機(jī)上測試成功,運(yùn)算時(shí)間不超過1秒。軟件運(yùn)行環(huán)境為P4/2G、512M、Windows2000/XP。為便于驗(yàn)證,設(shè)定Diffie-Hellman運(yùn)算基數(shù)p=50000001、q=70000001,DES系數(shù)r=1,DES模數(shù)u=1000000,而在實(shí)際應(yīng)用中應(yīng)根據(jù)需要按規(guī)定位數(shù)設(shè)定。由于本設(shè)計(jì)使用的是32位系統(tǒng),只能直接生成最大32位密鑰,用DES系數(shù)和DES模數(shù)處理后,得到56位密鑰。目前64位系統(tǒng)已漸趨普及,升級到64位系統(tǒng)后,能直接生成最大64位密鑰。也可將本文的算法及程序整合應(yīng)用到其他采用非公開密鑰的各種比特加密系統(tǒng)中[2],使加密傳輸更加方便、可靠。

參考文獻(xiàn):

[1] [美]William A. Shay著,高傳善譯.數(shù)據(jù)通信與網(wǎng)絡(luò)教程[M].機(jī)械工業(yè)

出版社,2000.

[2] 胡建偉.網(wǎng)絡(luò)安全與保密[M].西安電子科技大學(xué)出版社,2003.

[3] 裴禮文.數(shù)學(xué)分析中的典型問題與方法[M].高等教育出版社,2001.

[4] 王萌.Java程序設(shè)計(jì)[M].冶金工業(yè)出版社,2004.

[5] Stinson D. Cryptograph: Theory and Practice[M].Boca Raton, FL:

CRC Press,1995.

[6] Stallings W. Network and Internet Security[M].Englewood Cliffs,

NJ:Prentice-Hall,1995.

主站蜘蛛池模板: h网址在线观看| 亚洲av无码牛牛影视在线二区| 色婷婷电影网| 99在线观看免费视频| 亚洲国产成熟视频在线多多| 久操中文在线| 亚洲综合色在线| 欧美成人A视频| 久久动漫精品| 青草视频久久| 91香蕉国产亚洲一二三区| 国产精品性| 自慰网址在线观看| 国产成人精品午夜视频'| 一区二区午夜| 国产真实乱子伦视频播放| 亚洲色婷婷一区二区| 日本在线国产| 欧美中文字幕一区二区三区| 丰满人妻一区二区三区视频| 欧美伊人色综合久久天天| 青青草原国产| 欧美日本在线| 韩日午夜在线资源一区二区| 亚洲第一视频网站| 亚洲日本中文字幕乱码中文| 国内99精品激情视频精品| 免费一级全黄少妇性色生活片| 成人亚洲天堂| 又黄又湿又爽的视频| 国产av一码二码三码无码| 午夜性刺激在线观看免费| 亚洲va在线∨a天堂va欧美va| 广东一级毛片| 毛片一区二区在线看| 福利一区在线| 国产人碰人摸人爱免费视频| 久久永久精品免费视频| 亚洲女同一区二区| 久久久久人妻精品一区三寸蜜桃| 国产日韩欧美精品区性色| 91福利片| 久久青草精品一区二区三区| 亚洲天堂日韩av电影| 最新国语自产精品视频在| 欧美色图久久| 欧美午夜视频在线| 国产www网站| 免费女人18毛片a级毛片视频| 日本欧美一二三区色视频| 国产91九色在线播放| 好吊色国产欧美日韩免费观看| 欧美日韩国产在线观看一区二区三区| 日本国产精品一区久久久| 天堂在线www网亚洲| 国产欧美视频综合二区| 国产91导航| a毛片在线| 粗大猛烈进出高潮视频无码| 国产成人福利在线视老湿机| 内射人妻无码色AV天堂| 日本一区高清| 亚洲AV无码乱码在线观看代蜜桃| 免费av一区二区三区在线| 亚洲精品人成网线在线| 国产美女在线观看| 国产精品妖精视频| 美女内射视频WWW网站午夜| 亚洲欧美日韩精品专区| 中文字幕波多野不卡一区| 中文字幕日韩欧美| 亚洲国产成人久久精品软件| 国内黄色精品| 精品91自产拍在线| 国产97视频在线| 五月天综合网亚洲综合天堂网| 青青草国产一区二区三区| 免费在线色| 国产99精品久久| 激情乱人伦| 国产91小视频| 国产主播喷水|