【发布时间】:2018-06-20 10:16:39
【问题描述】:
我正在尝试编写一个函数,该函数将递归地散列一个键 n 次,在 sha224 和 sha256 之间交替。每次迭代都是 hash_256(hash_224)——一个 hash256 对应于 key 的 hash224——所以它会产生 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)
【问题讨论】:
-
缩进在 Python 中很重要。请正确缩进您的代码。
-
if n == 0 or 1始终为真。
标签: python python-3.x python-2.7 loops recursion