1

简短的问题:是否有经过证明的强可逆加密方法(在 Python 中)?

要求:不需要 Python 库的第 3 部分。
应用环境:通过网络传输数据。

我看到了一种使用str.translate()键生成表的方法。这是表格生成函数:

def get_table(key):
    m = hashlib.md5()
    m.update(key)
    s = m.digest()
    (a, b) = struct.unpack('<QQ', s)
    table = [c for c in string.maketrans('', '')]
    for i in xrange(1, 1024):
        table.sort(lambda x, y: int(a % (ord(x) + i) - a % (ord(y) + i)))
    return ''.join(table)

关于这个功能的问题:

  1. 这是一个好的/强大的可逆加密吗?
  2. 在函数中 1024 是一个很大的数字,我们需要循环这么多次才能得到一个足够强的表吗?

提前致谢。

4

3 回答 3

3

如果你想在没有第三方库的情况下进行强加密,那你就走运了——Python 标准库只有散列函数。如果您想要安全加密,您必须自己实现类似AES的东西(这不是一个好主意,因为在实现加密算法时,没有经验的人很容易搞砸),或者更改您的要求并使用PyCrypto

于 2012-12-09T06:58:53.667 回答
2

异或密码可以很好地工作(如果您将消息的每个字符与密钥中的对应字符按位异或,则可以通过再次将密文与密钥进行异或来再次返回消息)。

异或密码

编辑:您获取密钥的确切方式将决定此密码的安全性,但它是一种快速、易于可逆的密码。

EDIT2:具体来说,请参阅 Wiki 中的这些行,了解如何使它成为一个安全的密码系统......

“如果密钥是随机的并且至少与消息一样长,则 XOR 密码比消息中存在密钥重复的情况要安全得多。[3] 当密钥流由伪随机数生成器生成时,结果是一个流密码。使用真正随机的密钥,结果是一次性的,即使在理论上也是牢不可破的。

于 2012-12-09T06:49:42.440 回答
0

您可以使用偏移因子制作自己的加密程序。IE; 使用 ord() 将每个字母转换为数字。使用随机生成的偏移键添加到数字。使用 chr() 转换回字母

并解密:使用 ord() 将每个字符转换为数字,通过偏移键减去使用 chr() 转换回字母,您知道有原始消息。

希望对你有帮助

于 2016-12-13T10:56:59.673 回答