pyDHE:一个完整的PythonDiffie-Hellman库

pyDHE:一个完整的PythonDiffie-Hellman库

黑客软件hacker2019-06-15 10:15:259684A+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许可证书。


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 4条评论
  • 夙世南戈2022-05-29 17:51:10
  • e-Hellman,因而我也能够将自个的活力放到别的更关键的地区干了(比如建立真实的加密算法)。在此之前的多次开发设计全过程中,我必须应用1个建立了Diffie-Hellman-Ephemeral(
  • 晴枙羁拥2022-05-29 16:07:07
  • ob.update(Alice.getPublicKey()) (aliceFinal == bobFinal)True如同你所闻,每1个案例必需启用update()方式,并传送1个公共性密匙,传送公共性密匙的方式由你自个挑选,因
  • 馥妴秙暔2022-05-29 08:38:31
  • 用哪1个,全看你自个的挑选了:1.      struct.pack()2.      Crypto.
  • 瑰颈月棠2022-05-29 12:20:46
  • Key()) bobFinal = Bob.update(Alice.getPublicKey()) (aliceFinal == bobFinal)True如同你所闻,每

支持Ctrl+Enter提交

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