您的位置: turnitin查重官网> 计算机 >> 计算机工程 >密钥基于Ja点对点通信技术DES密钥交换

密钥基于Ja点对点通信技术DES密钥交换

收藏本文 2024-02-16 点赞:9104 浏览:34570 作者:网友投稿原创标记本站原创

摘要: 介绍了使用Ja的点对点通信技术,基于Diffie-Hellman规则,给出了IBM DES密钥交换的总体方案、算法和应用程序,详细说明了其中涉及的主要技术和方法,同时给出了在PC机上用二进制指数分解法实现大数模运算的算法分析和实现方案。
关键词: 密钥交换; Ja; DES; Diffie-Hellman
1006-8228(2012)11-23-03
Interchange of DES cipher key based on Ja 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 Ja 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; Ja; DES; Diffie-Hellman
0 引言
在IBM DES加密传输应用中,如果是首次通信或密钥已过期,则需要进行Diffie-Hellman密钥交换[6]。本文使用Ja的点对点通信技术和二进制指数分解法设计Diffie-Hellman密钥交换应用程序,如图

1、图2所示。

1.tif> 图1密钥交换怎么写作端
2.tif> 图2密钥交换客户端
密钥交换双方运行各自的程序,一方以客户机方式连接另一方(怎么写作端),设定任意的初始值(Diffie-Hellman运算指数),系统计算并交换密钥种子,生成初始密钥,经DES系数和DES模数处理后得到DES密钥。
1 算法

1.1 算法概要

密钥交换过程如图3所示。
[设定
初始值m][密钥
k=f2(N,m)][
密钥
交换
程序
][公共通信网络] [
密钥
交换
程序
][密钥种子
M=f1(m)][接收N][设定
初始值n][密钥
k'=f2(M,n)][密钥种子
N=f1(n)][接收M]
图3密钥交换过程
程序预设两个Diffie-Hellman运算基数p和q(大于80位二进制),程序运行时,交换双方分别设定运算指数m/n(大于20位二进制),程序用Diffie-Hellman算法[5]计算密钥种子:
M=pm mod q
N=pn mod q
程序交换M/N后,计算密钥:
k=Nm mod q
k'=Mn mod q
根据模运算的性质:
(pn mod q)m mod q=pnm mod q=pmn mod q=(pm mod q)n mod q
所以:
k=k'

1.2 算法设计

由于pm、pn以及Nm、Mn这样的大数,已远远超出了现有计算机处理数据的范围,本文用二进制指数分解法进行计算,概括如下(设要计算PD mod Q):
将D转换成二进制数B(设为bnbn-1…b1b0),各位从右到左依次存入bi(i=0,1,2,...,n,bi=0或1),得到D的分解式:
bn×2n+bn-1×2n-1+......+b1×21+b0×20
式中各项从右到左依次存入di(i=0,1,2,...,n),得到PD的分解式:
按照模运算的规律,若数列(x=0,1,2,...,n)中大于Q的最小元素是(0≤t≤n),且 mod Q=T,则:
mod Q
等价于
mod Q
在程序中可使用循环,

源于:论文资料网www.udooo.com

逐步减小PD分解式中指数较大的项,同时,利用模运算的如下性质[3]:
(X*Y*Z) mod Q=(((X*Y) mod Q)*Z) mod Q
得到算式PD mod Q中PD的可计算等价数(设为A),然后计算A mod Q的结果。

1.3 算法实现

按照上述算法,用Ja实现如下:
import ja.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];

摘自:毕业论文格式www.udooo.com

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号