pyDHE:一个完整的PythonDiffie-Hellman库
今日给大伙儿详细介绍这款全名是pyDHE的GitHub开源项目,它是1个选用Python开发设计的详细的Diffie-Hellman库,有必须的同学们能够试着应用或是奉献自个的编码。
pyDHE
pyDHE是这款选用Python語言开发设计的专用工具,它详细地建立了Diffie-Hellman优化算法。这个专用工具不但应用起來比较简单,并且它可以让开发者用十分简约的方式去应用Diffie-Hellman,因而我也能够将自个的活力放到别的更关键的地区干了(比如建立真实的加密算法)。
在此之前的多次开发设计全过程中,我必须应用1个建立了Diffie-Hellman-Ephemeral(DHE)的Python库,可是我找了一上午都找不着。我觉得这一优化算法的建立自身并多难,可是我居然找不着制好的库,这就要我很惊讶了。并且像pyCrypto、pyCryptodome和cryptography这类知名的Python数据加密库都注数了Diffie-Hellman。于是乎,我也准备自个写1个Python库来建立Diffie-Hellman优化算法。
专用工具安裝
pyDHE的安裝全过程比较简单,你能立即在PyPi上获得pyDHE,或根据运作pip指令进行安裝:
pip install pyDHE
专用工具应用
pyDHE的应用我觉得比较简单。它关键有二种方式:即手动式方式和商议方式。但不论哪这种方式,其回到的密匙长短都十分长。当你必须的是1个字符串,下边这好多个涵数或许就是你必须采用的,置于应用哪1个,全看你自个的挑选了:
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
如同你所闻,每1个案例必需启用update()方式,并传送1个公共性密匙,传送公共性密匙的方式由你自个挑选,因此我还称作手动式方式。
针对大部分手机应用程序,人们我觉得只不过应用手动式方式,人们能够立即挑选商议方式negotiate():
import socket import pyDHE
sock = socket.socket()
sock.connect(('localhost', 1234))
alice = pyDHE.new(16)
key= alice.negotiate(sock)
全部应用全过程十分的简易:
1.??????建立1个新的tcp套接字,随后进行联接。
2.??????启用x = pyDHE.new()
3.??????启用 x.negotiate(sock)
11.??????拿下!
常见问题:
1. update()方式将会回到最后的密匙,但当你沒有储存出来或你要必须应用它得话,你能立即启用getFinalKey()方式。
2. update()方式将会被启用数次,这将容许你建立出多方面密匙。可是该作用都还没开展详细的检测,因此应用起來会有必须的风险性。
许可证书协议书
因为加密算法是十分关键的,因此所有人都应当应用健硕的加密算法。我公布的这一新项目遵照BSD许可证书协议书,要是是之前得话我能挑选应用GPL v3,但以便要保证这一新项目到一切地区能够立即应用,因此我挑选了BSD许可证书。
相关文章
- 2条评论
- 笙沉氿雾2022-06-01 19:57:26
- 人们我觉得只不过应用手动式方式,人们能够立即挑选商议方式negotiate(): import socket import pyDHE sock = socket.socket() sock.connect(('local
- 依疚千鲤2022-06-01 17:14:12
- 式方式,人们能够立即挑选商议方式negotiate(): import socket import pyDHE sock = socket.socket() sock.connect(('localhost', 1234)) alice = pyDHE.new(16) k