2017-11-22 13 views
0

첫 번째 게시물을 여기에. 파이썬으로 코딩 한 것도 처음입니다.RSA 암호화 : 암호 해독 기능의 오류

정말 내 RSA 암호화 파이썬 프로젝트에 도움이 필요합니다.

암호 해독을 기능으로 바꾸면 내 암호 해독에 잘못된 키 오류가 표시됩니다. (오류 : 잘못된 키?) 하지만 암호 해독 기능에 내 암호 기능에 참여하면 작동하고 암호화 된 메시지의 암호를 해독합니다.

이유는 무엇입니까? CipherText는 새로운 변수가되고, 새로운 decrypt() 기능에

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() 
+0

위 코드의 들여 쓰기가 정확한지 확인할 수 있습니까? 그렇지 않은 경우 수정하십시오. 파이썬에서는 큰 효과가있을 수 있습니다. – roelofs

+0

끝에 코드가없는 것 같습니다. – roelofs

+0

@roelofs 올바른 btw입니다. 초보자 Stackoverflow에 게시 그래서 나는 그것이 엉망이 될 줄 몰랐다. 터미널에서 스크립트를 실행하면 내 코드가 작동합니다. 그리고 마지막 괄호 부분도 편집했습니다. 죄송합니다. :) – Bernard1009

답변

1

(I 리눅스 우분투를 실행 해요). 쓴 파일의 내용을 encrypt()에 다시로드해야 CipherText이됩니다.

이전에는 변수에 여전히 암호화 프로세스의 데이터가 포함되어있었습니다 (암호화 및 암호 해독이 동일한 기능에서 수행 된 경우).

+0

안녕하세요! 늦은 답변 죄송합니다. 변수의 내용을 다른 변수에 다시로드하기 위해 수행 할 작업을 검색하려고 시도했습니다. 고맙습니다! btw (https://stackoverflow.com/questions/10139866/calling-variable-defined-inside-one-function-from-another-function)를 사용하는 솔루션에 대한 링크 – Bernard1009

+0

파일을 열고 읽는 것만으로 다시 (당신이 실제 생활 준비에서 할 것 인) 것은 할 것이다 :) – roelofs