python中的可逆加密

时间:2012-12-09 06:30:31

标签: python encryption

简短问题:是否存在经过验证的强可逆加密方法(在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中是一个很大的数字,我们需要循环这么多次以获得足够强大的表吗?
  3. 提前致谢。

3 个答案:

答案 0 :(得分:3)

如果你想要没有第三方库的强加密,那你就不走运了 - Python标准库只有散列函数。如果你想要安全加密,你必须自己实现类似AES的东西(这不是一个好主意,因为对于没有经验的人来说,实施加密算法时很容易),或者改变你的要求和使用PyCrypto

答案 1 :(得分:2)

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

XOR Cipher

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

EDIT2:具体来说,请参阅Wiki中关于如何使其成为安全密码系统的这些内容......

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

答案 2 :(得分:0)

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

转换回字母

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

希望它可以帮到你