##### SUMMARY

I'm currently using ansible 2.9.9 (latest available on debian testing), with python 3.8.5
I used a playbook developed with ansible 2.7.7 (latest on debian stable), and I've been kick out of all my servers because the salt used in the password_hash() function contains specials caracters.

I dont know if this is intentional, an element missing in the documentation or if I was simply not aware of that fact, in any case, I think that it could be interessting to warn other about this.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
User (password_hash)

##### ANSIBLE VERSION
2.9.9

##### STEPS TO REPRODUCE
```---
- name:
  hosts:
    - localhost
  gather_facts: false
  tasks:
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 65534 | random( seed=inventory_hostname ) | string ) }}"
        
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 'salt' ) }}"
        
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 'salt-' ) }}"
        
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 'salt_' ) }}"
```

##### ACTUAL RESULTS
```
[WARNING]: Unable to parse /home/.../ansible/inventory as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [localhost] *******************************************************************************************************************************************

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "$6$43927$59/6eFzcpI0IigUdbYePA2OeIEwIkyqe9VJzYswDQhl6cD7I4SoZehr004rG.k4xB8/C5F7A4k9dU5LC1RdGn."
}

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "$6$salt$IxDD3jeSOb5eB1CX5LBsqZFVkJdido3OUILO5Ifz5iwMuTS4XMS130MTSuDDl3aCI6WouIL9AjRbLCelDCy.g."
}

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "*0"
}

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "*0"
}

PLAY RECAP *************************************************************************************************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```

##### EXPECTED RESULTS
Not "*0" for the password hashed.

"""Get the lock for writing password file."""
    first_process = False
    b_pathdir = os.path.dirname(b_path)
    lockfile_name = to_bytes("%s.ansible_lockfile" % hashlib.sha1(b_path).hexdigest())
    lockfile = os.path.join(b_pathdir, lockfile_name)
    if not os.path.exists(lockfile) and b_path != to_bytes('/dev/null'):
        try:
            makedirs_safe(b_pathdir, mode=0o700)
            fd = os.open(lockfile, os.O_CREAT | os.O_EXCL)
            os.close(fd)
            first_process = True
        except OSError as e:
            if e.strerror != 'File exists':
                raise
    counter = 0
    
    while os.path.exists(lockfile) and not first_process:
        time.sleep(2 ** counter)
        if counter >= 2:
            raise AnsibleError("Password lookup cannot get the lock in 7 seconds, abort..."
                               "This may caused by un-removed lockfile"
                               "you can manually remove it from controller machine at %s and try again" % lockfile)
        counter += 1
    return first_process, lockfile
def _release_lock(lockfile):
    """Release the lock so other processes can read the password file."""
    if os.path.exists(lockfile):
        os.remove(lockfile)
class LookupModule(LookupBase):