/// <summary>
        /// Used To generate password hash and its salts based on the given plain text password.
        /// </summary>
        /// <param name="plainTextPassword">{String} plain text password.</param>
        /// <returns>{PasswordModel} Newly generated password.</returns>
        public static PasswordModel GenratePassword(string plainTextPassword)
        {
            var publicSalt      = PasswrodHelper.GenerateNewSaltBase64();
            var privateSalt     = PasswrodHelper.GenerateNewSaltBase64();
            var firstHashBase64 = PasswrodHelper.GenerateSha1HashBase64(plainTextPassword, publicSalt);
            var finalHash       = PasswrodHelper.GenerateSha512HashBase64(firstHashBase64, privateSalt);

            return(new PasswordModel()
            {
                Password = plainTextPassword,
                PasswordHash = finalHash,
                PasswordPublicSalt = publicSalt,
                PasswordPrivateSalt = privateSalt,
            });
        }
        /// <summary>
        /// Used to Generate a random password with the public and private salt.
        /// </summary>
        /// <returns>{PasswordHolder} The Newly created password.</returns>
        public static PasswordModel GenerateRandomPassword()
        {
            var random = new byte[8];

            new RNGCryptoServiceProvider().GetBytes(random);
            var password        = Convert.ToBase64String(random);
            var publicSalt      = PasswrodHelper.GenerateNewSaltBase64();
            var privateSalt     = PasswrodHelper.GenerateNewSaltBase64();
            var firstHashBase64 = PasswrodHelper.GenerateSha1HashBase64(password, publicSalt);
            var finalHash       = PasswrodHelper.GenerateSha512HashBase64(firstHashBase64, privateSalt);

            return(new PasswordModel()
            {
                Password = password,
                PasswordHash = finalHash,
                PasswordPublicSalt = publicSalt,
                PasswordPrivateSalt = privateSalt,
            });
        }