2014-10-01 40 views
-3

今天我有了這個瘋狂的想法,我試圖做出類似於SHA-3算法的東西,現在我需要測試它。作爲回報098f6bcd4621d373cade4e832627b4f6如何打印舊結果以及使新結果成爲舊結果的新結果

用MD5

例如,如果我用加密MD5字母test我會得到。

現在我想加密新的結果098f6bcd4621d373cade4e832627b4f6並再次加密。

這給了我fb469d7ef430b0baf0cab6c436e70375

現在,我想這又是加密新的結果:fb469d7ef430b0baf0cab6c436e70375,這給了我25ab3b38f7afc116f18fa9821e44d561

如何保持在一個循環

+0

你的代碼是什麼樣的? – 2014-10-01 21:54:59

+0

我添加了一個MD5的例子,對不起,如果有混淆 – 2014-10-01 21:55:51

+0

我想你可能想實現一個遞歸算法。 – Zze 2014-10-01 21:56:33

回答

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 
+0

爲什麼downvote? – inspectorG4dget 2014-10-01 22:00:29

+0

我並沒有低調,但我們的回答之間唯一的區別是我會跟蹤是否發生了碰撞。除此之外,我們的答案基本相同。 – jedwards 2014-10-01 22:07:25

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中的輸入/輸出對,並且當發生衝突時,會打印生成相同輸出的兩個鍵(以前存儲在字典和「當前」輸入中的那個鍵)。

所有這些都說了,這不是測試碰撞的最佳方法,並且實施自己的哈希算法不是真正的建議,不僅僅是學習體驗。

+0

對於遲來的評論,但這看起來像蟒蛇2.5及以上,你有什麼用於Python 2.7和更新? – 2015-05-03 12:43:34

+0

@ Velocity-plus是什麼讓你覺得這不適用於2.7? – jedwards 2015-05-03 23:03:29