安全路透社
当前位置:安全路透社 > 网络转载 > 正文

pyDHE:一个完整的PythonDiffie-Hellman库

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

pyDHE:一个完整的PythonDiffie-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编译

未经允许不得转载:安全路透社 » pyDHE:一个完整的PythonDiffie-Hellman库

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册