密钥交换算法DH地JAVA实现_0.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密钥交换算法DH的JAVA实现 1、相关定义 1.1、基本概念 4.1.1 基本定义 定义1 控制流图 [14] 一个控制流图是一个三元组:G=( n 0, N,E),它具有以下特征: 1. N是一个有限个结点的集合,叫控制流图的点集 2. E是控制流图的点集的笛卡尔积NХN的子集,叫控制流图的边集。E中的任 意边e 是一条有向边,从v1到v2,v1是v2的前驱,v2是v1的后继。 3. n 0 是控制流图的初始结点。任取v属于N,都存在一条路径从n 0 到v,也就是 说N中的任意一个结点,从初始结点n 0 都是可达的。 定义 2 必经结点 [15] 在控制流图中,对任意两个结点 m 和 n,如果从控制流图的初始结点到 n 的 任何一条路径都必须经过 m,则 m 是 n 的必经结点,记为 m DOM n。一个结点的 所有必经结点构成该结点的必经结点集。记为:D(n) 定义 3 回边 [15] 假设 是控制流图中的一条从 a 到 b 的有向边,如果 b DOM a,则 是控制流图中的一条回边。 定义 4 控制流图的可归约性 [15] 一个控制流图是可归约的当且仅当该控制流图中,除去回边外,其余的边构 成一个无环路的子图,即一个没有有向圈的控制流图。否则该控制流图是不可归 约的。 定义 5 循环 [15] 20 在控制流图中具有下列性质的结点序列构为一个循环:它们是强连通的。 即其中的任意两个结点之间必有一条通路,而且该通路的所有结点都属于该结点 序列。如果该结点序列只包含一个结点,则必有一条有向边从该结点引导自身。 它们中间有且只有一个入口结点,所谓的入口结点是指序列中具有下列性质的 结点:从序列外某点有一条有向边指向它,或者它是控制流图的初始结点。事实 上具有上述特点的有向图就是控制流图中具有唯一入口结点的强连通子图,从循 环外要进入循环必须经过循环的入口结点。 定义 6 子控制流图 G=(n0,N,E)是一个控制流图,D=(n0,N,E’)是 G 的子控制流图,E’属 于 E。 4.1.2 必经结点集查找算法 把 DOM 看成是定义在控制流图的点集上的一个关系,则由定义很容易看出, 它具有以下性质[15]: (1)自反性 对控制流图中的任意一个结点 a 都有 a DOM a。 (2)传递性 对控制流图中的任意结点 a、b、c,若 a DOM b,b DOM c,则必 有 a DOM c。 (3)反对称性 若 a DOM b 且 b DOM a,则必有 a==b。 因此 DOM 是一个偏序关系。任何结点 n 的必经结点集必是一个有序集。根据 必经结点的定义,可以得出下列性质[15]:若 p1,p2,﹍,pk是结点 n 的所有前驱 并且d≠n时,则dDOMn的充要条件是对 1i≦k 中的所有 i 都有d DOM pi。 根据 DOM 关系的这一性质,可以得出求控制流图 G=(n0,N,E)的所有结点的必 经结点集的迭代算法。其中 P(n)代表结点n的前驱结点集,可直接从边集 E 中求出。 算法 4-1-1: 输入:控制流图 输出:控制流图的各个结点的必经结点集 DOMCollection(ControlFlow) { 1.求出各个结点的前驱结点集。 2.D(n0)={n0};for(nN-{n0}){D(n)=N};//设置初始值 3.bool change=true; 21 4.while(change) { 5.change=false; 6. for(nN-{n0}) { NEW={n}∪ ∩ D(p);//p∈P(n) if(D(n)≠NEW){ change=true; D(n)=NEW;} } } } 1.2、重要概念 Java 3D 中比较重要也最容易被忽略的两个概念是激活( live )和编译 (compiled)。把一个分支图插入到场景中就能使其激活,也就是说那个分支图上 的每个对象都变”活”了。对象变活后才能被绘制。而且,他们的参数是不能修改的, 除非在他们激活之前明确设置了对应的 capability 属性。BranchGroup 对象的编译 是把他们转变成一种更有效的渲染形式。编译步骤应该作为激活前的最后一步, 且最好是只编译要插入场景的 BranchGroup 对象。 需要注意的是,在前面所述的两种可视化步骤中,没有”启动渲染器”这一步。 虚拟世界中,当含有 View 实例的分支图被激活时,Java 3D 的渲染器将开始运行 并进入无限循环。一旦启动后,渲染器将执行如下操作: While(true){ Process input If(request to exit) break Perform behaviors Traverse the

文档评论(0)

ldj215323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档