如何打印旧结果和新结果使新结果成为旧结果

时间:2014-10-01 21:50:24

标签: python algorithm loops

MD5示例

如果我使用MD5加密字母test,我会得到:098f6bcd4621d373cade4e832627b4f6作为回报。

现在我想加密新结果098f6bcd4621d373cade4e832627b4f6并再次加密。

这给了我fb469d7ef430b0baf0cab6c436e70375

现在我想再次加密新结果:fb469d7ef430b0baf0cab6c436e70375,这会给我25ab3b38f7afc116f18fa9821e44d561

如何在循环中继续这样做

3 个答案:

答案 0 :(得分:1)

解决方案

使用sha256的示例,以继续对哈希算法的新结果/结果进行哈希处理。

from hashlib import sha256

# Hashing hello
result = sha256(b"Hello").hexdigest()

while True:
    result = sha256(result.encode()).hexdigest()
    # Do something here with the result

答案 1 :(得分:0)

cleartext = 'some text that I want to encrypt'
print(cleartext)
while 1:  # infinite loop
    ciphertext = myEncryptionAlgorithm(cleartext)
    print("old:", cleartext, '\n', "new:", ciphertext)
    cleartext = ciphertext

答案 2 :(得分:0)

这样的东西
vals = {}; 
x = 'a'; 
while(True): 
    y = fake_sha(x); 
    if y in vals: break
    vals[y] = x
    x = y

print("Duplicate output found at %s, inputs = (%s, %s)" % (y, vals[y], x))

可能工作。

它跟踪字典vals中的输入/输出对,当发生碰撞时,它会打印生成相同输出的两个键(先前存储在字典中的键和“当前”输入)

所有这一切,这不是测试冲突的最佳方法,并且除了学习体验之外,实际上并不建议实现自己的哈希算法。