如何优化Python简单加密?
因此,我在Python中做了一个简单的密码,现在试图找出如何优化它 我有一个words如何优化Python简单加密?,python,python-3.x,optimization,encryption,Python,Python 3.x,Optimization,Encryption,因此,我在Python中做了一个简单的密码,现在试图找出如何优化它 我有一个wordslibrary=['ab',ba','ac'…](library.length=127)和输入字符串的每个字符,我用库中的单词编码,例如 a becomes ab, b becomes ba, etc 我的目标是迭代编码,类似于: [iterations = 3] ab -> abba -> abbabaab -> abbaabbaababba import string def enc
library=['ab',ba','ac'…]
(library.length=127)和输入字符串的每个字符,我用库中的单词编码,例如
a becomes ab, b becomes ba, etc
我的目标是迭代编码,类似于:
[iterations = 3] ab -> abba -> abbabaab -> abbaabbaababba
import string
def encode(message, locks=[0]):
for key in locks:
encrypted = ''
char_map = {}
for letter in string.ascii_lowercase:
char_map[letter] = library[(ord(char) + key) % 128] + " "
for char in message:
encrypted += char_map[char]
message = encrypted
return message
现在我只是想选择它,想知道什么是最好的方法
*例如,可以传递锁[31,51,41],其中数字表示要编码的库的移位
library = ['ab', 'ba', 'bc' ...]
def encode(message, locks=[0]):
for key in locks:
encrypted = ''
for char in message:
encrypted += library[(ord(char) + key) % 128] + " "
message = encrypted
return encrypted
这里一个潜在的低效是,您为输入字符串中的每个字符计算并查找适当的库字。这意味着如果一个字符重复,您将执行两次此计算 首先生成所有潜在输入字符到单词的“映射”,然后为消息中的每个字符查找合适的单词,可能会更有效 例如,假设您的消息只包含小写字符,您可以执行以下操作:
[iterations = 3] ab -> abba -> abbabaab -> abbaabbaababba
import string
def encode(message, locks=[0]):
for key in locks:
encrypted = ''
char_map = {}
for letter in string.ascii_lowercase:
char_map[letter] = library[(ord(char) + key) % 128] + " "
for char in message:
encrypted += char_map[char]
message = encrypted
return message
显然,这是否有效取决于消息长度和每个字符的“重复”次数
然而,经常发生的一个“重复”是在每个字符之间添加一个空格。随着时间的推移,加密这些空格将增加大量开销,因此您肯定希望在每个循环中将“空格”映射到它的字一次,即使您不为其他字符执行此操作。该函数在O(n)时间内运行,其中n是消息的长度。你说的优化是什么意思?一个建议是删除语句
message=encrypted
,因为它除了用加密版本替换原始消息外,什么都不做,如果需要,也可以在返回后执行。我的目标是加密加密消息,此语句使用已加密的,再次加密,等等。我正试图找到一个更好的方法来优化这个过程。你说的优化是什么意思。如果我给你一个不同的方法,你将如何确定它相对于你的最优?谢谢你的回答!我将对此进行研究。进一步的优化是将第二个循环替换为.translate