Diffie-Hellman密钥交换算法

简述

何为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

# 判断互质
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值