Я написал код для генерации открытых и закрытых ключей. Он отлично работает в Python 3.7, но не работает в Python 3.8. Я не знаю, как это терпит неудачу в последней версии. Помогите мне с некоторыми решениями.
Вот код:
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)
Ошибка в версии Python 3.8:
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
Чмок альфа
источник
источник
Ответы:
Из документа Python 3.8 :
источник
Модуль, который вы используете для генерации ключа, вызывает метод, который устарел с python 3.3 time.clock () .
Вы можете перейти на Python 3.7 или изменить исходный код, чтобы заменить его. Вы должны открыть вопрос для этого.
источник
Это устарело, как сказано, что означает просто использовать последние версии библиотек, которые имеют этот модуль. Например, в зависимости от вашей зависимости, Удалить и установить
Идея заключается в том, что вам не нужно понижать версию Python, так как это настигнет вас позже. Просто обновите пакеты до более поздних, совместимых с Python 3.8
источник