繁体   English   中英

python中的可逆加密

[英]Reversible encryption in python

简短问题:是否有经过验证的强大可逆加密方法(在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中的数字很大,是否需要循环多次以得到足够强大的表?

提前致谢。

如果您想在没有第三方库的情况下进行强加密,那么您就不走运了-Python标准库仅具有哈希函数。 如果您想要安全加密,则必须自己实施类似AES的方法 (这不是一个好主意,因为对于缺乏经验的人,在实施加密算法时真的很容易搞砸),或者更改您的要求并使用PyCrypto

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

异或密码

编辑:确切地讲,您如何获取密钥将确定此密码的安全性,但这是一种快速,容易可逆的密码。

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

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

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

并解密:使用ord()将每个字符转换为数字,然后按偏移键减去,再使用chr()转换回字母,您知道该消息是原始消息。

希望对你有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM