Python : Pycrypto RSA public 密钥加密错误
Python : Pycrypto RSA public key encryption error
所以我刚开始尝试使用 Pycrypto 并想加密和解密一条消息,但是我放在一起的这段代码产生了一些错误。
他们在这里:
enc_data = public_key.encrypt
TypeError: unsupported operand type(s) for pow(): 'str', 'int','int'
ciphertext = cipher.encrypt('Bob')
Traceback (most recent call last):
line 22, in
ciphertext = cipher.encrypt('Bob')
File
"C:\Anaconda3\lib\site-packages\Crypto\Cipher\PKCS1_OAEP.py", line 50,
in encrypt
db = lHash + ps + bchr(0x01) + message
TypeError: can't concat bytes to str
代码:
import Crypto
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024, random_generator)
public_key = key.publickey()
enc_data = public_key.encrypt('Bob', 32)
cipher = PKCS1_OAEP.new(key)
ciphertext = cipher.encrypt('Bob')
用于加密的两个命令 'Bob' 产生了这些错误,是的,我现在认为第一种方法不是很安全。
在Python3中,字符串和字节是有区别的。 PyCrypto 以字节为单位工作,所以你需要给它字节,但 "Bob"
是一个字符串。您可以使用默认编码将字符串 a
转换为字节 a.encode()
。如果您有其他编码,则需要指定它。
您还可以通过在其前面加上 b
将文字字符串标记为字节。示例:b"Bob"
.
所以我刚开始尝试使用 Pycrypto 并想加密和解密一条消息,但是我放在一起的这段代码产生了一些错误。
他们在这里:
enc_data = public_key.encrypt
TypeError: unsupported operand type(s) for pow(): 'str', 'int','int'
ciphertext = cipher.encrypt('Bob')
Traceback (most recent call last):
line 22, in ciphertext = cipher.encrypt('Bob')
File "C:\Anaconda3\lib\site-packages\Crypto\Cipher\PKCS1_OAEP.py", line 50, in encrypt
db = lHash + ps + bchr(0x01) + messageTypeError: can't concat bytes to str
代码:
import Crypto
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024, random_generator)
public_key = key.publickey()
enc_data = public_key.encrypt('Bob', 32)
cipher = PKCS1_OAEP.new(key)
ciphertext = cipher.encrypt('Bob')
用于加密的两个命令 'Bob' 产生了这些错误,是的,我现在认为第一种方法不是很安全。
在Python3中,字符串和字节是有区别的。 PyCrypto 以字节为单位工作,所以你需要给它字节,但 "Bob"
是一个字符串。您可以使用默认编码将字符串 a
转换为字节 a.encode()
。如果您有其他编码,则需要指定它。
您还可以通过在其前面加上 b
将文字字符串标记为字节。示例:b"Bob"
.