Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Нужен исходник или DLL реализующий SHA1  (Прочитано 19328 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 26-05-2004 06:19 » 

или другой алгоритм хеширования с длиной кеша не меньше 16 байт...

(хорошо бы API)
Записан

Да да нет нет все остальное от лукавого.
Anonymous
Гость
« Ответ #1 : 26-05-2004 07:34 » 

SHA1 описан в RFC 3174.  В документе приведена эталонная реализация.

Стандарт дефакто в мире открытого софта -- реализация в библиотеке libcrypto проекта openssl.  В openssl реализованы MD5, SHA1, SHA2 и множество алгоритмов шифрования.
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 26-05-2004 07:38 » 

Гость -- это npak.

Ссылка на описание библиотеки libcrypto

http://www.openssl.org/docs/crypto/crypto.html
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 26-05-2004 10:40 » 

Спасибо сейчас посмотрю, ...
сам пока полазилп о SDK нашел  ADVAPI32.dll  поддержку шифрования...
в принципе судя по опесанию для моих целей это подходит ... учитывая что это у же встроино во все винды начиная с 98.

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

Да да нет нет все остальное от лукавого.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 26-05-2004 11:28 » 

PSD, у меня в MSDN October 2001 есть раздел Platform SDK->Security->Cryptography->CryptoAPI

В этом разделе есть про SHA1.  Смотри функцию CryptCreateHash
и компанию.

Если в связке с SHA1 упоминается ключ, то это не то, что тебе надо.  Как я понимаю, тебе нужно считать контрольную сумму файла.  Это называется MAC -- message authentication code.  MAC используется для проверки случайных изменений содержимого сообщения при транспортировке.  MAC не может защитить от злонамеренного искажения сообщения, при котором враг меняет сообщение и пересчитывает контрольную сумму.  Для такой защиты используется хэширование с ключом -- HMAC.  Даже если враг перехватил и изменил сообщение, пересчитать контрольную сумму он не сможет, так как не знает ключ, который подмешивается в сообщение при вычислении контрольной суммы.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 26-05-2004 12:22 » 

PSD, по моему, не стоит с микрософтовской подсистемой криптографии заморачиваться.  Я взял сорсы из RFC 3174, немного подкрутил для VC 6.0 и оно заработало.  Никаких проблем и затруднений.  В том же RFC пример, как пользоваться предложенной реализацией.

Вот подкрутка, которую надо внести в sha1.h из RFC.  Вместо включения стандартного заголовка POSIX stdint.h на винде надо ручками сделать типы, которыми пользуется реализация.
Код:
#ifndef WIN32
#include <stdint.h>
#else
/*
 * If you do not have the ISO standard stdint.h header file, then you
 * must typdef the following{
 *    name              meaning
 *  uint32_t         unsigned 32 bit integer
 *  uint8_t          unsigned 8 bit integer )i.e., unsigned char:
 *  int_least16_t    integer of >= 16 bits
 *
 */

typedef unsigned int uint32_t;
typedef unsigned char uint8_t;
typedef short int int_least16_t;
#endif
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 26-05-2004 12:36 » 

У меня задача не много другая мне нужно реализовать чтото вроде индексации
для поиска на файловом серевере  дубликатов файлов .... файлов МНОГО
в качестве первого уровня я хочу использовать базу контрольный сумм но так как файлов МНОГО то мощности  контрольной суммы даже 32х разрядной не хватает... и я для этого хочу использовать какой нибудь стандартный и жела тельно встроеный в винды алгоритм хеширования... в качестве основы решил взять SHA1  20 байт мне в полне достаточно.... чтоб различать 2-3 милиона файлов...
запнулся на том что мне нужно като сохранить закрытый ключ и для базы он  должен быть один раз и навсегда .....
Инициализация провайдера, генерация ключа, установка ключа проходят на ура, а вот сохранить и потом заново инициализировать ключ не получается...
В лоб воспользоваться  CryptExportKey не получилось

if (!CryptAcquireContext(&phProv,NULL,NULL,PROV_RSA_FULL,0)){errmsg("CryptAcquireContext");};


if (!CryptGenKey(phProv,CALG_RC2,CRYPT_EXPORTABLE,&hKey)){errmsg("CryptGenKey ");};   

if (!CryptExportKey(hKey,NULL,PRIVATEKEYBLOB,0,NULL,&KeyLen)){errmsg("CryptExportKey ");};   
Key=(BYTE *) malloc(KeyLen);
if (!CryptExportKey(hKey,NULL,PRIVATEKEYBLOB,0,Key,&KeyLen)){errmsg("CryptExportKey 1 ");};   
   
}

не получилось она упорно говорит что свеже сгенерированый ключ не правельный или его нет во все .....
Записан

Да да нет нет все остальное от лукавого.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 26-05-2004 12:41 » 

Сходил на openssl не понял как ее скачать целиком там куча версий но они като частями гдето одного нет гдето другого .....
Записан

Да да нет нет все остальное от лукавого.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 26-05-2004 13:10 » 

Цитата: PSD
У меня задача не много другая мне нужно реализовать чтото вроде индексации
для поиска на файловом серевере  дубликатов файлов .... файлов МНОГО
в качестве первого уровня я хочу использовать базу контрольный сумм но так как файлов МНОГО то мощности  контрольной суммы даже 32х разрядной не хватает... и я для этого хочу использовать какой нибудь стандартный и жела тельно встроеный в винды алгоритм хеширования... в качестве основы решил взять SHA1  20 байт мне в полне достаточно.... чтоб различать 2-3 милиона файлов...
запнулся на том что мне нужно като сохранить закрытый ключ и для базы он  должен быть один раз и навсегда .....


Для индексирования тебе нет надобности хэшировать с ключом.  Достаточно простой реализации из RFC (ведь в первом постинге ты спрашивал про сорсы тоже).

Цитата
Инициализация провайдера, генерация ключа, установка ключа проходят на ура, а вот сохранить и потом заново инициализировать ключ не получается...
В лоб воспользоваться  CryptExportKey не получилось


не получилось она упорно говорит что свеже сгенерированый ключ не правельный или его нет во все .....


Вот вот.  От лукавого это, пользоваться такой большой пушкой.  Пока её настроишь ...

Наверное, ты будешь пользоваться каким-то скриптом для работы.  Тогда можно воспользоваться уже готовыми программами, например md5sum (128-битный хэш) и sha1sum.  Соответственно:

http://www.ossh.com/gnu-win32/md5sum.exe
http://www.ossh.com/gnu-win32/sha1sum.exe
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 27-05-2004 04:59 » 

Про openssl и libcrypto там уних преведено куча ресурсов для скачивания обозваны они примерно так
openssl-engine-0.9.6h.tar.gz (MD5) (PGP sign)
я так понимаю что это шифр .... как это правельно читать
и как согласно этой номенклатуре должен зазываться полный пакет?
(я тут скачал 4 верхних а там както все кусками толи архивы поврежденые толи еще чтото половино h  пустые)
Записан

Да да нет нет все остальное от лукавого.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 27-05-2004 05:35 » 

Ем.... я тото не правельно понял или это библиотека для перла?
мне нужно сие в VC ++ втащить.....
Записан

Да да нет нет все остальное от лукавого.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #11 : 27-05-2004 06:00 » 

Вот вам несколько ссылок на разные библиотечки:
http://www.eskimo.com/~weidai/cryptlib.html
http://www.cs.auckland.ac.nz/~pgut001/cryptlib/
http://beecrypt.virtualunlimited.com/
http://mcrypt.sourceforge.net/
Записан

Странно всё это....
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #12 : 27-05-2004 06:08 » 

Вот еще:
http://mcrypt.sourceforge.net/
http://libtomcrypt.org/
а искалось это здесь
http://packages.gentoo.org/packages/?category=dev-libs
очень удобно краткое описание + homepage + платформы
А зечем именно 16 байт по ГОСТу 27148-89 и то меньше 8.
Записан

Странно всё это....
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 27-05-2004 07:17 » 

Все я вехал ...... для того чтобы получить нормальный бинарник нужно было скачать перл и обработать им файлы до получения asm для соответствующего компилятора...
Записан

Да да нет нет все остальное от лукавого.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 27-05-2004 08:08 » 

Цитата

очень удобно краткое описание + homepage + платформы
А зечем именно 16 байт по ГОСТу 27148-89 и то меньше 8.

Потому что хешь предполоагется использовать для первичного сравнения файлов в большом файловом массиве ... если все пойдет как я предпологаю то в очень большом...... порядка 2-3 милионов файлов  поэтому беру с запасом ... будет много лишнее уберем
Записан

Да да нет нет все остальное от лукавого.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 27-05-2004 10:25 » 

PSD, в качестве хэша можно взять размер файла.  ИМХО, довольно хорошее приближение для различения файлов.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 28-05-2004 07:53 » 

Для картинок плохое.... они иметю тенденцию  иметь стандартный размер ....
Записан

Да да нет нет все остальное от лукавого.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines