Saya telah menulis kode untuk menghasilkan kunci publik dan pribadi. Ini berfungsi dengan baik di Python 3.7 tetapi gagal dalam Python 3.8. Saya tidak tahu bagaimana itu gagal di versi terbaru. Bantu saya dengan beberapa solusi.
Inilah Kode:
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)
Kesalahan dalam versi 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
Menampar alfa
sumber
sumber
Jawaban:
Dari Python 3.8 doc :
sumber
Modul yang Anda gunakan untuk menghasilkan panggilan kunci metode yang telah disusutkan sejak python 3.3 time.clock () .
Anda bisa menurunkan versi ke python 3.7 atau mengubah kode sumber untuk menggantinya. Anda harus membuka masalah untuk itu juga.
sumber
Itu ditinggalkan seperti yang dikatakan yang berarti hanya menggunakan versi terbaru dari perpustakaan yang memiliki modul itu. Misalnya, tergantung pada ketergantungan yang Anda miliki, Hapus dan Instal
Idenya adalah Anda tidak perlu menurunkan versi python Anda karena ini akan menyusul Anda nanti. Cukup perbarui paket ke yang lebih baru yang kompatibel dengan Python 3.8
sumber