public static final boolean verifyHashTextFormat(String sha512CryptText)
  {
    if (!sha512CryptText.startsWith(sha512_salt_prefix))
      {
        return false;
      }

    sha512CryptText = sha512CryptText.substring(sha512_salt_prefix.length());

    if (sha512CryptText.startsWith(sha512_rounds_prefix))
      {
        String num = sha512CryptText.substring(sha512_rounds_prefix.length(), sha512CryptText.indexOf('$'));

        try
          {
            int srounds = Integer.valueOf(num).intValue();
          }
        catch (NumberFormatException ex)
          {
            return false;
          }

        sha512CryptText = sha512CryptText.substring(sha512CryptText.indexOf('$')+1);
      }

    if (sha512CryptText.indexOf('$') > (SALT_LEN_MAX + 1))
      {
        return false;
      }

    sha512CryptText = sha512CryptText.substring(sha512CryptText.indexOf('$') + 1);

    for (int i = 0; i < sha512CryptText.length(); i++)
      {
        if (itoa64.indexOf(sha512CryptText.charAt(i)) == -1)
          {
            return false;
          }
      }

    return true;
  }