Adopt the crypt_r() hash style

1. This commit implements the sha256-based hash method used in crypt_r()
   in glibc.

2. The password length now is allowed to be 1 to 256 characters.

3. The size of password hash structure is changed and the extra space
   is reserved for the future use.
Support SHA512-based crypt_r() hash