简述
何为DH密钥间换协议?
DH密钥交换是1976年由Diffie和Hellman共同发明的一种算法。使用这种算法,通信双方仅通过交换一些可以公开的信息就能够生成出共享的密码数字,而这一密码数字就可以被用作对称密码的密钥。IPsec中就使用了经过改良的DH密钥交换。
虽然这种方法的名字叫“密钥交换”,但实际上双方并没有真正交换密钥,而是通过计算生成出一个相同的共享密钥。因此,这种方法也称DH密钥协商。
DH内容
DH协议内容如下:
- 协议使用一个质数p的整数模n乘法群以及其原根g
Alice与Bob协定使用 p以及base g
Alice选择一个秘密整数a, 计算A = g^a mod p并发送给Bob。
Bob选择一个秘密整数b, 计算B = g^b mod p并发送给Alice。
Alice计算alice_key = B a mod p
Bob计算bob_key = A b mod p
这样就实现了密钥的交换,互相可以计算出会话密钥。
代码实现
#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/12/25 17:01
# @Author : SystemDefenser
# @Email : mrwx1116@163.com
# @Software: PyCharm
from random import randrange, choice
# 判断素数
def judgePrimeNumber(num):
# 不能被2~sqrt(m)(取整)之间的整数整除的数即素数
sqrtResult = int(num ** 0.5)
for i in range(2, sqrtResult + 1):
if num % i == 0:
return False
return True
# 判断互质