pyDHE:一个完整的PythonDiffie-Hellman库

pyDHE:一个完整的PythonDiffie-Hellman库

黑客软件hacker2019-06-15 7:25:359332A+A-

今日给大伙儿详细介绍这款全名是pyDHE的GitHub开源项目,它是1个选用Python开发设计的详细的Diffie-Hellman库,有必须的同学们能够试着应用或是奉献自个的编码。

pyDHE:一个完整的PythonDiffie-Hellman库 第1张

  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

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理