RSA加密:解密函数错误

时间:2017-11-22 15:23:54

标签: python python-2.7 encryption rsa m2crypto

首先发布在这里。这也是我第一次使用Python进行编码。

我真的需要RSA加密python项目的帮助。

如果我将解密转换为函数,我的解密会显示错误的密钥错误。 (错误:错误的钥匙?) 但是当我将解密函数加入我的加密函数时,它会对我加密的消息进行处理和解密。

我可以问为什么? (我在Linux Ubuntu上运行它)

 import os
 import M2Crypto

def encrypt():

   pubkey = (raw_input('Enter choosen public key:'))
   loadpub = M2Crypto.RSA.load_pub_key (pubkey + '-public.pem')

   encrypt = (raw_input('Enter message to decrypt:'))
   CipherText = loadpub.public_encrypt (encrypt, M2Crypto.RSA.pkcs1_oaep_padding)

   print "Encrypted message:"
   print CipherText.encode ('base64')
   f = open ('encryption.txt', 'w')
   f.write(str(CipherText.encode ('base64'))) #write ciphertext to file
   f.close()

def decrypt():
   privkey = (raw_input('Enter choosen private key:'))
   loadprivkey = M2Crypto.RSA.load_key (privkey + '-private.pem')

   try:
    PlainText = loadprivkey.private_decrypt (CipherText, M2Crypto.RSA.pkcs1_oaep_padding)
   except:
    print "Error: wrong key?"
    PlainText = ""

   if PlainText != "":
    print "Message decrypted by " + privkey + " :"
    print PlainText

 def first():
  print "Press 1 for encryption."
  print "Press 2 for decryption."
  qwe = (raw_input(''))
  if qwe == '1':
    encrypt()
    first()
  elif qwe == '2':
    decrypt()
    first()
  else: 
    print "Please enter a correct number"
    first()

  if __name__ == '__main__':
    first()

1 个答案:

答案 0 :(得分:1)

在新的decrypt()功能中,CipherText成为新变量。您需要将您在encrypt()中写入的文件的内容重新加载到CipherText

以前,该变量仍然包含加密过程中的数据(当加密和解密在同一个函数中执行时)。