c# быстро хешируют вычисление

Быстрое исправление : создайте класс для своего logo и установите для height значение 28px. Это хорошо работает с navbar на всех устройствах. Обратите внимание, я сказал, что работает "ХОРОШО".

.logo {
  display:block;
  height:28px;
}
6
задан J-16 SDiZ 27 June 2009 в 02:05
поделиться

4 ответа

MD5 and SHA1 rely on native implementaions, nonetheless its possible a C++ solution + introp could be slightly faster, cause you could possibly reduce the number of method calls a bit and optimize the native implementation.

Keep in mind that the Native (SHA1CryptoServiceProvider) can be 3X faster than the managed one(SHA1Managed).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Security.Cryptography;

namespace ConsoleApplication22 {



    class Program {

        static void Profile(string description, int iterations, Action func) {

            // clean up
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            // warm up 
            func();

            var watch = Stopwatch.StartNew();
            for (int i = 0; i < iterations; i++) {
                func();
            }
            watch.Stop();
            Console.Write(description);
            Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);
        }

        static void Main() {
            SHA1Managed managed = new SHA1Managed();
            SHA1CryptoServiceProvider unmanaged = new SHA1CryptoServiceProvider();

            Random rnd = new Random();

            var buffer = new byte[100000];
            rnd.NextBytes(buffer);

            Profile("managed", 1000, () => {
                managed.ComputeHash(buffer, 0, buffer.Length);
            });

            Profile("unmanaged", 1000, () =>
            {
                unmanaged.ComputeHash(buffer, 0, buffer.Length);
            });

            Console.ReadKey();
        }
    }
}
managed Time Elapsed 891 ms
unmanaged Time Elapsed 336 ms

Also Keep in mind unless my calculation is wrong, the unmanaged implementation is hashing 100MB of data in about 300 milliseconds, this would very rarely be a bottleneck.

16
ответ дан 8 December 2019 в 12:22
поделиться

Я бы просто использовал классы BCL SHA1 и MD5CryptoServiceProvider . Те, которые поставляются с фреймворком, довольно быстрые.

0
ответ дан 8 December 2019 в 12:22
поделиться

Класс SHA1CryptoServiceProvider использует базовую реализацию Windows API. Однако SHA1Managed работает довольно быстро.

РЕДАКТИРОВАТЬ: Да, можно вычислить хэш шаг за шагом. Это делают методы TransformBlock и TransformFinalBlock .

3
ответ дан 8 December 2019 в 12:22
поделиться

В зависимости от вашего приложения хеширования MD5 может быть неприменим. MD5 полезен только для исправления ошибок, он больше не пригоден для защиты от изменения злонамеренного файла.

http://en.wikipedia.org/wiki/Md5#Vulnerability

Вкратце, конфликты MD5 просты для генерации путем изменения 16 байтов в файле.

0
ответ дан 8 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: