在python中使用RSA算法中的public密钥解密

Decryption using public key in RSA algorithm in python

我正在进行许可证检查,我将使用私钥加密字符串文本并使用 public 密钥对其进行解密,我知道这不是标准的解密方式,但我正在尝试以相反的方式为我的项目构建,标准 cryptodome 库在解密时检查私钥,它 returns 一个错误并说“不是私钥”,所以有什么办法修复它吗?

public_key = b64decode(pubkey)
public_key = RSA.importKey(public_key )
cipher = PKCS1_v1_5.new(public_key )
plaintext = cipher.decrypt(b64decode(encrpted_data_base64), "Error while decrypting")
print(plaintext)

File "c:\Users\Desktop\license.py", line 17, in <module>
    plaintext = cipher.decrypt(b64decode(encrpted_data_base64), "Error while decrypting")
  File "C:\Users\AppData\Local\Programs\Python\Python39\lib\site-packages\Cryptodome\Cipher\PKCS1_v1_5.py", line 180, in decrypt
    m_int = self._key._decrypt(ct_int)
  File "C:\Users\AppData\Local\Programs\Python\Python39\lib\site-packages\Cryptodome\PublicKey\RSA.py", line 156, in _decrypt
    raise TypeError("This is not a private key")
TypeError: This is not a private key

反向操作没有任何用处,因为您的 public 键是 public。它作为加密过程的一部分通过网络广播,以响应要求密钥的请求。任何人都可以提出相同的请求来索取密钥。这意味着如果 public 密钥被用于解密,任何人都可以使用 public 密钥解密消息,这就是为什么他们不能。它们仅用于加密。

也许您要在邮件上签名?签名的工作方式是在签名附加到消息后,私钥的持有者,任何人,通过使用 public 密钥和消息,都可以证明,使用 RSA 的功能来证明签名, 所附签名确实是由私钥持有者添加的。