如何散列两个参数

时间:2019-09-12 08:26:37

标签: python sha256

想要对两个字符串进行哈希处理,以下代码将引发错误,SHA 256只能对一个值进行哈希处理。
还有其他方法可以散列两个参数吗?

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

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

1 个答案:

答案 0 :(得分:1)

https://docs.python.org/2/library/hashlib.html中描述了一些方法)

一些例子。

方法1:

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)

方法2:

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()

方法3(相当于方法2)

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