Python 是否具有使用密码对字符串进行编码/解码的内置简单方法?
像这样的东西:
>>> encode('John Doe', password = 'mypass') 'sjkl28cn2sx0' >>> decode('sjkl28cn2sx0', password = 'mypass') 'John Doe'
所以字符串“John Doe”被加密为“sjkl28cn2sx0”。要获取原始字符串,我将使用密钥“mypass”“解锁”该字符串,这是我源代码中的密码。我希望这是我可以使用密码加密/解密 Word 文档的方式。
我想将这些加密字符串用作 URL 参数。我的目标是混淆,而不是强大的安全性;没有任何关键任务被编码。我意识到我可以使用数据库表来存储键和值,但我正在努力做到极简主义。
假设您 只是 在寻找简单的混淆,这会掩盖 非常 随意的观察者的东西,并且您不希望使用第三方库。我会推荐像 Vigenere cipher 这样的东西。它是最简单的古代密码之一。
维根密码
它快速且易于实施。就像是:
import base64 def encode(key, string): encoded_chars = [] for i in xrange(len(string)): key_c = key[i % len(key)] encoded_c = chr(ord(string[i]) + ord(key_c) % 256) encoded_chars.append(encoded_c) encoded_string = "".join(encoded_chars) return base64.urlsafe_b64encode(encoded_string)
解码几乎相同,除了减去密钥。
如果您要编码的字符串很短,和/或很难猜测所用密码的长度,则更难破解。
如果您正在寻找加密的东西,PyCrypto 可能是您最好的选择,尽管之前的答案忽略了一些细节:PyCrypto 中的 ECB 模式要求您的消息长度为 16 个字符的倍数。所以,你必须垫。此外,如果您想将它们用作 URL 参数,请使用base64.urlsafe_b64_encode(), 而不是标准参数。这会将 base64 字母表中的一些字符替换为 URL 安全字符(顾名思义)。
base64.urlsafe_b64_encode()
但是,在使用它之前,您应该绝对确定这个 非常 薄的混淆层足以满足您的需求。我链接到的维基百科文章提供了破解密码的详细说明,因此任何有中等决心的人都可以轻松破解它。