Ich habe Code geschrieben, um öffentliche und private Schlüssel zu generieren. Es funktioniert gut in Python 3.7, aber es schlägt in Python 3.8 fehl. Ich weiß nicht, wie es in der neuesten Version fehlschlägt. Helfen Sie mir mit einigen Lösungen.
Hier ist der Code:
from Crypto.PublicKey import RSA
def generate_keys():
modulus_length = 1024
key = RSA.generate(modulus_length)
pub_key = key.publickey()
private_key = key.exportKey()
public_key = pub_key.exportKey()
return private_key, public_key
a = generate_keys()
print(a)
Fehler in Python 3.8 Version:
Traceback (most recent call last):
File "temp.py", line 18, in <module>
a = generate_keys()
File "temp.py", line 8, in generate_keys
key = RSA.generate(modulus_length)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/PublicKey/RSA.py", line 508, in generate
obj = _RSA.generate_py(bits, rf, progress_func, e) # TODO: Don't use legacy _RSA module
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/PublicKey/_RSA.py", line 50, in generate_py
p = pubkey.getStrongPrime(bits>>1, obj.e, 1e-12, randfunc)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Util/number.py", line 282, in getStrongPrime
X = getRandomRange (lower_bound, upper_bound, randfunc)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Util/number.py", line 123, in getRandomRange
value = getRandomInteger(bits, randfunc)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Util/number.py", line 104, in getRandomInteger
S = randfunc(N>>3)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 202, in read
return self._singleton.read(bytes)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 178, in read
return _UserFriendlyRNG.read(self, bytes)
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 129, in read
self._ec.collect()
File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 77, in collect
t = time.clock()
AttributeError: module 'time' has no attribute 'clock'
python
attributeerror
pycrypto
python-3.8
Smack Alpha
quelle
quelle
Antworten:
Aus dem Python 3.8-Dokument :
quelle
Das Modul, mit dem Sie den Schlüssel generieren, ruft eine Methode auf, die seit Python 3.3 time.clock () abgeschrieben wurde .
Sie können ein Downgrade auf Python 3.7 durchführen oder den Quellcode ändern, um ihn zu ersetzen. Sie sollten auch dafür ein Problem eröffnen.
quelle
Es ist wie gesagt veraltet, was bedeutet, dass Sie nur die neuesten Versionen von Bibliotheken verwenden, die dieses Modul haben. Abhängig von der Abhängigkeit, die Sie haben, entfernen und installieren
Die Idee ist, dass Sie Ihre Python-Version nicht herunterstufen müssen, da dies Sie später einholen wird. Aktualisieren Sie einfach die Pakete auf spätere, die mit Python 3.8 kompatibel sind
quelle