code: def _makepass(password, hasher='sha256'):
      '''
      Create a znc compatible hashed password
      '''
      # Setup the hasher
      if hasher == 'sha256':
          h = hashlib.sha256(password)
      elif hasher == 'md5':
          h = hashlib.md5(password)
      else:
          return NotImplemented
  
      c = "abcdefghijklmnopqrstuvwxyz" \
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
          "0123456789!?.,:;/*-+_()"
      r = {
          'Method': h.name,
          'Salt': ''.join(random.SystemRandom().choice(c) for x in range(20)),
      }
  
      # Salt the password hash
      h.update(r['Salt'])
      r['Hash'] = h.hexdigest()
  
      return f _makepass(password, hasher='sha256'):
      '''
      Create a znc compatible hashed password
      '''
      # Setup the hasher
      if hasher == 'sha256':
          h = hashlib.sha256(password)
      elif hasher == 'md5':
          h = hashlib.md5(password)
      else:
          return NotImplemented
  
      c = "abcdefghijklmnopqrstuvwxyz" \
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
          "0123456789!?.,:;/*-+_()"
      r = {
          'Method': h.name,
          'Salt': ''.join(random.SystemRandom().choice(c) for x in range(20)),
      }
  
      # Salt the password hash
      h.update(r['Salt'])
      r['Hash'] = h.hexdigest()
  
      return r
docs: Create a znc compatible hashed password