Как сравнить два хеша(sh1) с солью на совпадение

Вот код создания хеша sh1. Как сравнить два таких хеша на совпадение ?

  1. Мой сайт генерирует хеш по несложной формуле(которую описал ниже) с помощью секретного ключа. где key2sfs это и есть секретный ключ

  2. Далее этот хеш отправляется на мой сервер.

  3. Мой сервер генерирует хеш по той же формуле, используя тот же ключ .

  4. Хеши совпали — доступ разрешен, не совпали — запрещен.

     using System.Security.Cryptography;
     using System.Text;
    
     //Метод для генерации хеша
     string getHesh()
     {
         int lifetime = 3600 * 3; // The link will become invalid in 3 hours.
         long starttime = DateTimeOffset.Now.ToUnixTimeSeconds() - 300;
         long endtime = starttime + lifetime;
         string salt = Convert.ToHexString(RandomNumberGenerator.GetBytes(16));
         string hash = Hash($"cam_10000760no_check_ip{starttime}{endtime}key2sfs{salt}");
         Console.WriteLine("Хеш: " + hash);
         return hash;
     }
    
     static string Hash(string input)
     {
         using (SHA1 sha1 = SHA1.Create())
         {
             byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
             return String.Concat(hash.Select(b => b.ToString("x2")));
         }
     }
    

Ответы (0 шт):