code: def pbkdf2_bin(
      data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None
  ):
      
      if not hashfunc:
          hashfunc = "sha256"
  
      data = to_bytes(data)
      salt = to_bytes(salt)
  
      if callable(hashfunc):
          _test_hash = hashfunc()
          hash_name = getattr(_test_hash, "name", None)
      else:
          hash_name = hashfunc
      return hashlib.pbkdf2_hmac(hash_name, data, salt, iterations, keylen)
docs: Returns a binary digest for the PBKDF2 hash algorithm of `data`
      with the given `salt`. It iterates `iterations` times and produces a
      key of `keylen` bytes. By default, SHA-256 is used as hash function;
      a different hashlib `hashfunc` can be provided.
  
      .. versionadded:: 0.9
  
      :param data: the data to derive.
      :param salt: the salt for the derivation.
      :param iterations: the number of iterations.
      :param keylen: the length of the resulting key.  If not provided
                     the digest size will be used.
      :param hashfunc: the hash function to use.  This can either be the
                       string name of a known hash function or a function
                       from the hashlib module.  Defaults to sha256.