如何散列两个参数

how to hash two arguments

想要散列两个字符串,下面的代码会抛出一个错误,即 SHA 256 只能散列一个值。
有没有其他方法可以散列两个参数?

sign =hex(hashlib.sha256(secret,param_str))

TypeError: sha256() takes at most 1 argument (2 given)

https://docs.python.org/2/library/hashlib.html)

中描述的方法

一些例子。

方法一:

import hashlib, binascii
def generate_hash1(secret, param_str): 
      bsecret = secret.encode('utf-8')
      bparam_str = param_str.encode('utf-8')
      dk = hashlib.pbkdf2_hmac('sha256', bsecret, bparam_str, 100000)
      return binascii.hexlify(dk)

方法二:

import hashlib
def generate_hash2(secret, param_str):
  dk = hashlib.sha256()
  bsecret = secret.encode('utf-8')
  bparam_str = param_str.encode('utf-8')
  dk.update(bsecret)
  dk.update(bparam_str)
  return dk.hexdigest()

方法三(相当于方法二)

import hashlib
def generate_hash3(secret, param_str):
  dk = hashlib.sha256()
  s = secret + param_str  # concatenate strings, then hash
  dk.update(s.encode('utf-8'))
  return dk.hexdigest()

结果

print(generate_hash1("my secret", "password")) #b'8843eb1e289740e6379eed8191497788dd527164beafce1fb09e7f60adb54e1d'
print(generate_hash2("my secret", "password")) # 45bf5f14029ae0e54807be1ed048bb82d33c2100781b03007f989744961a49a9
print(generate_hash3("my secret", "password")) # 45bf5f14029ae0e54807be1ed048bb82d33c2100781b03007f989744961a49a9