2015-02-18 397 views
1

所以我是一个Python n00b,我试图破解这个脚本来创建一个终点加密工具。基本上,脚本使用raw_input并使用16位数字符串使用AES对其进行编码。为了解密该消息,您需要手动粘贴已编码的文本,然后粘贴密钥。有没有办法从文件中拉出文本,然后将编码文本输出到不同的文件?如何从一个txt文件导入raw_input /将raw_input写入一个txt文件

这里是我迄今:

from Crypto.Cipher import AES 
import string 
import base64 
import time 
#import modules 
PADDING = '{' 
BLOCK_SIZE = 32 
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING 
#prepare crypto method 
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s))) 
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING) 
#set encryption/decryption variables 
loop=5 
while loop==5: 
    #set up loop, so the program can be rerun again if desired without restarting 
    option=raw_input("Would You Like to Encrypt Or Decrypt Text?\nEncrypt: a\nDecrypt: b\n") 
    if option=='a': 
     letter=3 
     while letter==3: 
      secret = raw_input("Please Enter An Encryption Key {must be 16 characters long}: ") 
      countTotal= (len(secret)) 
      if countTotal==16: 
       cipher = AES.new(secret) 
       letter=0 
      else: 
       print "Please Ensure The Key You Entered Is 16 Characters In Length\n" 
       letter=3 
       #this checks the encryption key to ensure it matches the correct length 
     # encode a string 
     data=raw_input("Please Enter Text You'd Like Encrypted: ") 
     encoded = EncodeAES(cipher, data) 
     print 'Encrypted string:', encoded 
     options=raw_input("Would You Like To Encrypt/Decrypt Again? Y/N\n") 
     if options=='y': 
      loop=5 
     if options=='n': 
      loop=0 

    if option=='b': 

     encoded=raw_input("Please Enter The Encoded String:\n") 
     letter=3 
     while letter==3: 
      secret=raw_input("Please Enter The Decryption Key:\n") 
      countTotal= (len(secret)) 
      #this checks the encryption key to ensure it matches the correct length 
      if countTotal==16: 
       cipher = AES.new(secret) 
       letter=0 
       decoded = DecodeAES(cipher, encoded) 
       print 'Decrypted string:', decoded 
       options=raw_input("Would You Like To Encrypt/Decrypt Again? Y/N\n") 
       if options=='y': 
        loop=5 
       if options=='n': 
        loop=0 
      else: 
       print "Please Ensure The Key You Entered Is 16 Characters In Length\n" 
       letter=3 

if loop==0: 
    print "Goodbye!!" 
    time.sleep(2) 
    exit 
    #exits the program if desired by user 

回答

2

你可以打开一个特定的文件,打开( 'filename.extension', 'R/W/...')。然后,您可以通过read(),readline()或readlines()来浏览文件的内容。要写入文件,只需打开一个文件是这样的:

f = open('filename.txt', 'w')  #make new file (open for write) 
f.write('This is a test\n')  #write to that file 

更多信息阅读和写作看到:https://docs.python.org/2/tutorial/inputoutput.html

+0

谢谢你的链接!很有帮助。它完全按照我的需要分解它。我会给你一个upvote,但我不能直到我的代表达到15! – greenMamBa 2015-02-18 00:51:37

+0

@Jonathan没问题,很高兴我能帮上忙 – rodalfus 2015-02-18 01:03:33