python无关哈希inpu

2024-06-28 11:03:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用md5作为密钥流生成器,我需要输入和相应的哈希值彼此独立。我的问题是:

from hashlib import md5
a1=md5()
a2=md5()
a1.update(b'a')
a1.update(b'b')
a2.update(b'ab')
a1.digest()==a2.digest()
True

从上面看,我真正想要的是a1.update(b'b')是'b'的散列值,而不是'ab'。换句话说,我想要的是连接散列值以形成密钥流。例如,我有一个种子:“TEST”,我想把每个字母都输入md5,简单来说就是md5('T')+md5('E')+md5('S')+md4('T')。我可能认为下面的函数会起作用

def keygen(key):
    a = md5()
    keystream=bytearray(b'')
    for i in key:
        a.update(i.encode())
        keystream += a.digest()
    return keystream

但是由于a.update(a);a.update(b)等同于a.update(a+b),所以它不会产生我想要的结果。 我找不到任何方法来清除实例以获得独立的结果。另一方面,我不能为每个循环实例化新对象来实现我想要的目标。 我怎样才能达到我想要的目标考虑以上。 谢谢大家。你知道吗


Tags: 实例keyfromimporta2目标aba1
1条回答
网友
1楼 · 发布于 2024-06-28 11:03:19

不能清除现有实例,但也不需要。你知道吗

只需实例化一个新实例:

def keygen(key):
    keystream=bytearray(b'')
    for i in key:
        a = md5(i.encode())
        keystream += a.digest()
    return keystream

现在,请记住,您要做的是非常不安全的,因为从计算出的密钥流中导出原始密钥非常简单,这对于PRNG来说是非常不需要的属性(尽管这甚至不是PRNG,因为密钥流是有限的)。你知道吗

通常的警告适用:不要推出自己的加密,除非你只是玩或学习。你知道吗

相关问题 更多 >