我正在尝试编写一个函数,递归地对一个键进行n次哈希运算,在sha224和sha256之间交替进行。每次迭代都是hash_256(hash_224)——密钥的hash224的hash256——因此它将产生n*(hash_256(hash_224))。但是,我对编码还比较陌生,不知道如何用这些参数编写递归函数。你知道吗
import hashlib
def shasum(key, n):
key = str(key).encode('utf-8')
hash_a = hashlib.sha224(key).hexdigest().encode('utf-8'))
hash_b = hashlib.sha256(hash_a).hexdigest()
if n == 0 or 1:
return hash_b #one iteration of 256(224)
else:
return n-1
return hash_b #stuck here
编辑:现在它的行为就像一个数字生成器。怎么了?你知道吗
import hashlib
n = 0
def sha480(seed):
hashed_224 = str(hashlib.sha224(seed)).encode('utf-8')
hashed_256 = hashlib.sha256(hashed_224).hexdigest()
hashed_480 = str(hashed_256)
print("hash: " + hashed_480)
def repeater(key, n):
if n == 0:
return key
seed = str(key).encode('utf-8')
while n > 0:
return sha480(repeater(seed, n-1))
repeater('what', 2)
你的代码几乎是正确的。只是一些小问题修复如下
您根本没有递归调用。您可以将其更改为:
旁注:
n == 0 or 1
等同于(n == 0) or 1
,这总是正确的。对于该模式,使用n == 0 or n == 1
或更短的n in (0, 1)
相关问题 更多 >
编程相关推荐