簡體   English   中英

python中RSA算法使用公鑰解密

[英]Decryption using public key in RSA algorithm in python

我正在進行許可證檢查,我將在其中使用私鑰加密字符串文本並使用公鑰對其進行解密,我知道這不是標准的解密方式,但我正在嘗試以相反的方式為我的項目構建,標准 cryptodome 庫在解密時檢查私鑰,它返回一個錯誤並說“不是私鑰”,所以有什么辦法修復它嗎?

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

因為您的公鑰是公開的,所以反向操作沒有任何用處。 它作為加密過程的一部分通過網絡廣播,以響應要求密鑰的請求。 任何人都可以提出相同的請求來索取密鑰。 這意味着如果公鑰用於解密,任何人都可以使用公鑰解密消息,這就是為什么他們不這樣做的原因。 它們僅用於加密。

也許您正在尋找消息簽名? 簽名的工作方式是在將簽名附加到消息后,私鑰的持有者,任何人,通過使用公鑰和消息,都可以使用 RSA 的特征來證明簽名,附加的簽名確實是由私鑰的持有者添加的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM