Вычисление хеш-суммы для файлов

Блог 24 декабря 2013

Многие сайты показывают хеш-сумму для файлов, которые можно с них загрузить. Можно найти программку, которая ее вычисляет (чтобы убедиться в неизменности файла), но лучше написать самому...

Делаем консольное приложение на C#.
using System;
using 

System.Collections.Generic;
using System.IO;
using System.Text;
using System.Configuration;

namespace hash
{
    class Program
    {
    

    static void Main(string[] args)
        {
            string file = ConfigurationManager.AppSettings["file"];
            string hash = 

ConfigurationManager.AppSettings["hash"];
            string s = "The quick brown fox jumps over the lazy dog";//2fd4e1c6 7a2d28fc ed849ee1 bb76e739 

1b93eb12
            string sOut = "";

            if (string.IsNullOrEmpty(hash))
            {
                Console.WriteLine("SHA1 hash of 

" + s + "=" + HashSha1(s));
            }
            else if (hash != "md5" && hash != "sha1")
            {
                Console.WriteLine

("hash 'md5' or 'sha1'!");
            }
            else
            {
                try
                {
                    byte[] bb 

= File.ReadAllBytes(file);

                    if (hash == "md5")
                        sOut = HashMD5(bb);
                    if (hash == 

"sha1")
                        sOut = HashSha1(bb);

                    Console.WriteLine("hash=" + sOut);
                }
                

catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
            }
            

Console.ReadKey();
        }
Загружаем из конфиг-файла управляющие параметры: имя файла и тип хеша. Считываем файл. Вызываем функцию для вычисления хеша, выводим на консоль. Ждем нажатия клавиши.
        //MD5
        public static string HashMD5(byte[] 

bb)
        {
            if (bb == null || bb.Length == 0) return "";
            System.Security.Cryptography.MD5CryptoServiceProvider oMD5 = new 

System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bytes = oMD5.ComputeHash(bb);
            System.Text.StringBuilder hexString = 

new System.Text.StringBuilder(bytes.Length * 2);
            for (int i = 0; i < bytes.Length; i++)
            {
                hexString.Append(bytes

[i].ToString("x2"));
            }
            return hexString.ToString();
        }

        public static string HashMD5(String sIn)
        

{
            if (sIn == null || sIn.Length == 0) return "";
            System.Text.UTF8Encoding oUTF8 = new System.Text.UTF8Encoding();
            

byte[] bytes = oUTF8.GetBytes(sIn);
            return HashMD5(bytes);
        }
        //SHA1
        public static string HashSha1(byte[] bb)
     

   {
            if (bb == null || bb.Length == 0) return "";
            System.Security.Cryptography.SHA1CryptoServiceProvider oMD5 = new 

System.Security.Cryptography.SHA1CryptoServiceProvider();
            byte[] bytes = oMD5.ComputeHash(bb);
            System.Text.StringBuilder hexString = 

new System.Text.StringBuilder(bytes.Length * 2);
            for (int i = 0; i < bytes.Length; i++)
            {
                hexString.Append(bytes

[i].ToString("x2"));
            }
            return hexString.ToString();
        }

        public static string HashSha1(String sIn)
        

{
            if (sIn == null || sIn.Length == 0) return "";
            System.Text.UTF8Encoding oUTF8 = new System.Text.UTF8Encoding();
            

byte[] bytes = oUTF8.GetBytes(sIn);
            return HashSha1(bytes);
        }
    }
}

Создаем объект провайдер криптографического сервиса соответсвующего типа (MD5 или SHA1). Вычисляем биты хеша, конвертируем в строку.

Теги: интернет,C#,программирование,продвинуть сайт


Комментарии

Андрей: 29-12-2013 16:07
Краткость - сестра таланта)
Добавить комментарий могут только авторизованные пользователи. Авторизоваться
Комментарий

Оценка





Авторизоваться через https://www.pvobr.ru
Логин
Пароль
Регистрация

Авторизоваться через соцсети
Наверх

продвинуть сайт

разработка сайтов школа   курсы образование   создание сайта магазина   обучающие курсы центры   эффективная раскрутка сайта   продвижение в яндексе   заказать приложение   создание web сайтов   онлайн курсы   разработка веб сайтов   разработка интернет порталов   создание интернет магазин купить   разработка учебных программ