【问题标题】:Python File EncryptionPython 文件加密
【发布时间】:2015-07-18 06:17:14
【问题描述】:

我需要使用关键短语加密文件以用于部分评估。我在 python 中做我的并且遇到了问题。它是使用 python 2.7.4 编写的

我的代码如下:

导入数组

def encrypter(intext, shift, modder):
    plain2 = list(intext)
    plain = array.fromlist(plain2)
    out = ''
    j = 0
    key = list(shift)
    for c in plain:
        if mod > 0:
            x = chr((ord(c) + ord(key[(j % (len(plain) - 1)) % len(key)]) - 48) % 58 + 48)
        if mod < 0:
            x = chr((ord(c) - ord(key[(j % (len(plain) - 1)) % len(key)]) - 48) % 58 + 48)
        out += x
        j += 1
    return out
sel = raw_input("Encrypt (e)/ Decrypt (d)")
if sel == 'e':
    mod = 1
    intext = open(raw_input("what is your file"),'r')
    shift = raw_input("what is your first password")
    encrypter(intext, shift, mod)

else:
    pass

我的问题是,每当我使用名为 text1.txt 的文件运行此程序时,我都会收到此错误:

Traceback (most recent call last):
  File "D:/Programming/Computing GCSE/Tasks/task3.py", line 22, in <module>
    encrypter(intext, shift, mod)
  File "D:/Programming/Computing GCSE/Tasks/task3.py", line 5, in encrypter
    plain = array.fromlist(plain2)
AttributeError: 'module' object has no attribute 'fromlist'

任何人都可以建议更改我的代码吗?我需要这个相对较快,因为我的评估是在一个小时左右!

【问题讨论】:

  • 如果这项工作很重要,您需要在它变得紧急之前尽早开始它。现在对你很紧急,而不是对我们。

标签: python arrays python-2.7 encryption


【解决方案1】:

根本不清楚为什么需要array 模块。像这样的东西不行吗?

def encrypter(intext, shift, modder):
    plain = intext
    out = ''
    j = 0
    key = shift
    for c in plain:
        if mod > 0:
            x = chr((ord(c) + ord(key[(j % (len(plain) - 1)) % len(key)]) - 48) % 58 + 48)
        if mod < 0:
            x = chr((ord(c) - ord(key[(j % (len(plain) - 1)) % len(key)]) - 48) % 58 + 48)
        out += x
        j += 1
    return out

【讨论】:

  • #Traceback(最近一次调用最后一次):文件“D:/Programming/Computing GCSE/Tasks/task3.py”,第 22 行,在 加密器(intext,shift,mod)文件中“D:/Programming/Computing GCSE/Tasks/task3.py”,第 5 行,在加密器中 plain = array.array.fromlist(plain2) TypeError: 描述符 'fromlist' 需要一个 'array.array' 对象,但收到了一个 'list '
  • 您可能甚至不需要array 模块。查看我的编辑。
  • 当我这样做时,我收到此错误 Traceback(最近一次调用最后一次):文件“D:/Programming/Computing GCSE/Tasks/task3.py”,第 22 行,在 加密器中( intext, shift, mod) 文件“D:/Programming/Computing GCSE/Tasks/task3.py”,第 10 行,在加密器中 x = chr((ord(c) + ord(key[(j % (len(plain) - 1)) % len(key)]) - 48) % 58 + 48) TypeError: ord() 期望一个字符,但找到长度为 15 的字符串
  • intext = open(raw_input("what is your file"),'r').read()
【解决方案2】:

从模块导入数组类

from array import array
plain = array('b', plain2)

【讨论】:

  • Traceback(最近一次调用最后):文件“D:/Programming/Computing GCSE/Tasks/task3.py”,第 22 行,在 加密器(intext,shift,mod)文件中“ D:/Programming/Computing GCSE/Tasks/task3.py", line 5, in encrypter plain = array.fromlist(plain2) TypeError: descriptor 'fromlist' requires a 'array.array' object but received a 'list'跨度>
猜你喜欢
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 2020-03-19
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多