【问题标题】:how to hash two arguments如何散列两个参数
【发布时间】:2021-02-26 11:28:51
【问题描述】:

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

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

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

【问题讨论】:

  • 您如何定义“哈希 2 值”?连接两个值,然后将它们散列在一起并得到一个结果?或者对两个值分别运行哈希算法并得到两个完全独立的结果?
  • 你可以连接它们

标签: python sha256


【解决方案1】:

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

方法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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 2017-12-18
    • 2021-07-30
    • 2010-10-22
    相关资源
    最近更新 更多