当前位置:首页 » 操作系统 » 交换算法描述

交换算法描述

发布时间: 2025-06-27 01:21:23

c语言中交换a、b两个数的一种算法

a=a^b^(a^b)

定义两个数int x,y;

如果x=0,y=0,x^y==0;
如果x=0,y=1,x^y==1;
如果x=1,y=0,x^y==1;
如果x=1,y=1,x^y==0;

Ⅱ 简要介绍DH密钥交换算法

姓名:朱睿琦

学号:15180288015

参考:https://ke..com/item/Diffie-Hellman/9827194?fr=aladdin

http://blog.csdn.net/fw0124/article/details/8462373

【嵌牛导读】:随着互联网络的高速发展,计算机运算能力的提升,对信息的保密也有了更近一步的要求——不仅信息要保密,密钥也要保密。DH(Diffie-Hellman)算法就提供了使密钥安全通过不安全网络的方法。

【嵌牛鼻子】:DH算法,密钥,网络信息安全

【嵌牛提问】:DH算法是用来保护什么在网络中的通信安全?DH密钥交换的基本原理是什么?

【嵌牛正文】:(1)、算法描述

离散对数的概念:

原根 :如果 a 是素数 p 的一个原根,那么数值:

a mod p , a^ 2 mod p ,…, a^( p-1) mod p

是各不相同的整数,且以某种排列方式组成了从 1 到 p-1 的所有整数。

离散对数 :如果对于一个整数 b 和素数 p 的一个原根 a ,可以找到一个唯一的指数 i ,使得:

b =( a的i次方) mod p 其中 0 ≦ i ≦ p-1

那么指数 i 称为 b 的以 a 为基数的模p的离散对数。

Diffie-Hellman算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数 p 和它的一个原根 a 后,对给定的 b ,要计算 i ,被认为是很困难的,而给定 i 计算 b 却相对容易。

Diffie-Hellman算法:

假如用户A和用户B希望交换一个密钥。

取素数 p 和整数 a , a 是 p 的一个原根,公开 a 和p。

A选择随机数XA< p ,并计算YA= a^ XA mod p。

B选择随机数XB< p ,并计算YB= a^ XB mod p。

每一方都将X保密而将Y公开让另一方得到。

A计算密钥的方式是:K=(YB) ^XA mod p

B计算密钥的方式是:K=(YA) ^XB mod p

证明:

(YB)^ XA mod p = ( a^ XB mod p )^ XA mod p

= ( a^ XB)^ XA mod p = ( a^ XA) ^XB mod p (<-- 密钥即为 a^(XA*XB) mod p )

=( a^ XA mod p )^ XB mod p = (YA) ^XB mod p

由于XA和XB是保密的,而第三方只有 p 、 a 、YB、YA可以利用,只有通过取离散对数来确定密钥,但对于大的素数 p ,计算离散对数是十分困难的。

例子:

假如用户Alice和用户Bob希望交换一个密钥。

取一个素数 p =97和97的一个原根 a =5。

Alice和Bob分别选择秘密密钥XA=36和XB=58,并计算各自的公开密钥:

YA= a^ XA mod p =5^36 mod 97=50

YB= a^ XB mod p =5^58 mod 97=44

Alice和Bob交换了公开密钥之后,计算共享密钥如下:

Alice:K=(YB) ^XA mod p =44^36 mod 97=75

Bob:K=(YA) ^XB mod p =50^58 mod 97=75

(2)、安全性

当然,为了使这个例子变得安全,必须使用非常大的XA, XB 以及 p , 否则可以实验所有的可能取值。(总共有最多97个这样的值, 就算XA和XB很大也无济于事)。

如果 p 是一个至少 300 位的质数,并且XA和XB至少有100位长, 那么即使使用全人类所有的计算资源和当今最好的算法也不可能从a, p 和a^(XA*XB) mod p 中计算出 XA*XB。

这个问题就是着名的离散对数问题。注意g则不需要很大, 并且在一般的实践中通常是2或者5。

在最初的描述中,迪菲-赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务,因此它很容易受到中间人攻击。

一个中间人在信道的中央进行两次迪菲-赫尔曼密钥交换,一次和Alice另一次和Bob,就能够成功的向Alice假装自己是Bob,反之亦然。

而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。

有很多种安全身份验证解决方案使用到了迪菲-赫尔曼密钥交换。例如当Alice和Bob共有一个公钥基础设施时,他们可以将他们的返回密钥进行签名。

热点内容
android手机耗电 发布:2025-06-27 04:57:21 浏览:144
俄罗斯ftp下载 发布:2025-06-27 04:53:37 浏览:623
linux怎么连接ssh服务器 发布:2025-06-27 04:52:22 浏览:309
苹果手机输密码停用怎么办 发布:2025-06-27 04:50:45 浏览:452
泰拉瑞亚怎么建服务器 发布:2025-06-27 04:50:44 浏览:940
安卓怎么下载shadowrocket 发布:2025-06-27 04:46:20 浏览:631
离线与缓存 发布:2025-06-27 04:39:57 浏览:790
极致引流脚本 发布:2025-06-27 04:32:48 浏览:38
v20方舟编译器在哪下载 发布:2025-06-27 04:26:54 浏览:79
易语言解压zip 发布:2025-06-27 04:26:49 浏览:657