2017-03-13 6 views
-1

ここでスクリプトで私はユーザー入力としてハッシュを取って、それがmd5かsha1かsha256かどうかを計算しています。しかし今、問題はすべてのハッシュを対応する他のハッシュに変換し、変数に格納します。md5の値を対応するSHA1とSHA256のpythonに変換しますか?

私はStackOverflowの答えからこのhashlibを試しました。

>>> import hashlib 
>>> s = 'something to hash' 
>>> sb = s.encode("utf8") 
>>> hashlib.md5(sb) 
<md5 HASH object @ 0x7f36f5ce3440> 
>>> hashlib.md5(sb).hexdigest() 
'6f4815fdf1f1fd3f36ac295bf39d26b4' 
>>> hashlib.sha1(sb).hexdigest() 
'72668bc961b0a78bfa1633f6141bcea69ca37468' 

しかし、これはテキストが与えられたときに解決されますが、私の場合は直接ハッシュがこのように与えられます。

hash_value = sys.argv[1] 

#print len(hash_value) 
if len(hash_value) == 64: 
     type_of_hash = 'sha256' 
elif len(hash_value) == 40: 
     type_of_hash = 'sha1' 
elif len(hash_value) == 32: 
     type_of_hash = 'md5' 
else: 
     print "Invalid Hash" 

は今、私がやってみたかったすべては、私は他の形式にハッシュ値を変換する必要がSHA256入力されている与えられたと仮定し、対応する他の人にHASH_VALUEを変換しています。

これを解決する方法の提案はありますか?

+1

「形式」と異なるわけではありません。まったく異なるハッシュ関数です。一般に、それらのいずれかを計算するために元のテキストが必要です。 –

+0

それは確かに不可能ですが、好奇心の理由から、なぜあなたはこれを必要としますか? – bereal

答えて

2

あなたがしたいことはできません。 3つのハッシュを生成するには、異なるアルゴリズムで同じ入力を3回処理する必要があります。

これらのいずれかが他のものから派生している場合は、セキュリティの面でどちらか一方を使用する利点がないため、このようなアルゴリズムを持つ理由はありません。

関連する問題