Как сравнить два хеша(sh1) с солью на совпадение
Вот код создания хеша sh1. Как сравнить два таких хеша на совпадение ?
Мой сайт генерирует хеш по несложной формуле(которую описал ниже) с помощью секретного ключа. где key2sfs это и есть секретный ключ
Далее этот хеш отправляется на мой сервер.
Мой сервер генерирует хеш по той же формуле, используя тот же ключ .
Хеши совпали — доступ разрешен, не совпали — запрещен.
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"))); } }