python 网络协议 库_pyDHE:一个完整的PythonDiffie-Hellman库

pyDHE是一个用Python编写的Diffie-Hellman库,提供手动和协商两种模式,适用于需要DHE算法的场景。安装简单,使用方便,可用于创建安全的密钥交换。
摘要由CSDN通过智能技术生成

今天给大家介绍一款名叫pyDHE的GitHub开源项目,这是一个采用Python开发的完整的Diffie-Hellman库,有需要的同学可以尝试使用或者贡献自己的代码。

pyDHE

pyDHE是一款采用Python语言开发的工具,它完整地实现了Diffie-Hellman算法。这款工具不仅使用起来非常简单,而且它还可以让开发人员用非常简洁的方法去使用Diffie-Hellman,因此你就可以将自己的精力放在其他更重要的地方上了(例如实现真正的加密算法)。

在此之前的一次开发过程中,我需要使用一个实现了Diffie-Hellman-Ephemeral(DHE)的Python库,但是我找了半天都找不到。其实这个算法的实现本身并不难,但是我竟然找不到现成的库,这就让我很吃惊了。而且像pyCrypto、pyCryptodome和cryptography这种著名的Python加密库都遗漏了Diffie-Hellman。于是乎,我就打算自己写一个Python库来实现Diffie-Hellman算法。

工具安装

pyDHE的安装过程非常简单,你可以直接在PyPi上获取pyDHE,或通过运行pip命令完成安装:pip install pyDHE

工具使用

pyDHE的使用其实非常简单。它主要有两种模式:即手动模式和协商模式。但无论哪一种模式,其返回的密钥长度都非常长。如果你需要的是一个字符串,下面这几个函数也许是你需要用到的,至于使用哪一个,就看你自己的选择了:1.      struct.pack()

2.      Crypto.Util.number.long_to_bytes()

3.      任何接受长整形(bigInt)的哈希算法

在手动模式下,你可以调用update()和getPublicKey()函数。数据的传输需要你自己解决,而手动模式下将允许你对流量进行完整控制、对套接字进行配置、或选择你想使用的传输方法(UDP、IPC或其他)

下面给出的是手动模式下的参考样本(本地使用样例,不涉及套接字):import pyDHE

Alice = pyDHE.new()

Bob = pyDHE.new()

aliceFinal = Alice.update(Bob.getPublicKey())

bobFinal = Bob.update(Alice.getPublicKey())

(aliceFinal == bobFinal)

True

正如你所见,每一个实例必须调用update()方法,并传递一个公共密钥,传递公共密钥的方法由你自己选择,所以我才称之为手动模式。

对于大多数应用程序,我们其实并不需要使用手动模式,我们可以直接选择协商模式negotiate():import socket

import pyDHE

sock = socket.socket()

sock.connect(('localhost', 1234))

alice = pyDHE.new(18)

key= alice.negotiate(sock)

整个使用过程非常的简单:1.      创建一个新的tcp套接字,然后完成连接。

2.      调用x = pyDHE.new()

3.      调用 x.negotiate(sock)

4.      搞定!

注意事项:

1. update()方法将会返回最终的密钥,但如果你没有保存下来或你还需要使用它的话,你可以直接调用getFinalKey()方法。

2. update()方法将会被调用多次,这将允许你创建出多方密钥。但是该功能还没有进行完整的测试,所以使用起来会有一定的风险。

许可证协议

由于加密算法是非常重要的,所以任何人都应该使用健壮的加密算法。我发布的这个项目遵循BSD许可证协议,如果是以前的话我会选择使用GPL v3,但为了要确保这个项目到任何地方都可以直接使用,所以我选择了BSD许可证。

* 参考来源:pyDHE, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值