Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SHA в XE8 / 21 сообщений из 21, страница 1 из 1
04.07.2018, 14:28
    #39669509
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Vsem priven.

В проекте на XE8 требуется закодировать с HASH SHA256. Гугл выдает ссылку на эту страницу . Но такого юнита нет. подозреваю, что в более новых версиях все соотвествует документации. Но все же, есть ли где-то шифрование по указанному типу или нужно что то дополнительно скачивать?
...
Рейтинг: 0 / 0
04.07.2018, 14:39
    #39669516
dartveider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
В Инди есть модуль IdHash, насчет 256 не уверен, но дока описывает что он умеет SHA делать. Есть еще MD5 в IdHashMessageDigest. Я его в одном своем приложении применил
...
Рейтинг: 0 / 0
04.07.2018, 14:39
    #39669517
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
svd,

Погугли DCPCrypt либу.
...
Рейтинг: 0 / 0
04.07.2018, 14:45
    #39669520
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
не надо индюков юзать.
это хаос, а не библиотека.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.07.2018, 14:47
    #39669522
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Если в доках на ХЕ8 нету данного алгоритма, то придется скачивать
...
Рейтинг: 0 / 0
04.07.2018, 14:51
    #39669524
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Мимопроходящий,

нормальная, в целом, либа. не без проблем, конечно.
...
Рейтинг: 0 / 0
04.07.2018, 15:02
    #39669532
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
system.hash пришел в Seattle
...
Рейтинг: 0 / 0
04.07.2018, 15:39
    #39669551
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Спасибо за советы.

Любую не подходит. Нужно именно SHA256. На другом конце будет совершенно другой код работать.

Посмотрел IdHASH и не нашел там что либо о SHA256.

Скачал DCPCrypt. Вроде что то есть, но придется кучу модулей еще в проект пихать - эффект матрешки. Причем сторонних, что не есть хорошо.
...
Рейтинг: 0 / 0
04.07.2018, 15:41
    #39669552
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Я пользовался этой, с минимум оверхеда.

https://github.com/fundamentalslib/fundamentals5/blob/master/Source/Utils/flcHash.pas
...
Рейтинг: 0 / 0
04.07.2018, 16:14
    #39669570
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
svd,

Можно без "библиотек", если под винду. Виндовыми обойтись.

На, вот:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
function HashData( Source: Pointer; nSourceLen: DWORD; Dest: Pointer; nResultLen: DWORD; alg: ALG_ID ): Boolean;
var
  lpProvider: PChar;
  dwProvType: DWORD;

  hash_prov: HCRYPTPROV;
  hash_item: HCRYPTHASH;
  hash_len: DWORD;
begin
  Result := FALSE;

  if ( alg >= CALG_SHA_256 ) and ( alg <= CALG_SHA_512 ) then begin
    lpProvider := nil;
    dwProvType := PROV_RSA_AES;
  end else begin
    lpProvider := MS_DEF_PROV;
    dwProvType := PROV_RSA_FULL;
  end;

  if ( CryptAcquireContext( @hash_prov, nil, lpProvider, dwProvType, CRYPT_VERIFYCONTEXT or CRYPT_SILENT ) <> FALSE ) then
  begin
    if ( CryptCreateHash( hash_prov, alg, nil, 0, @hash_item ) ) then
    begin
      if ( CryptHashData( hash_item, Source, nSourceLen, 0 ) ) then
      begin
        hash_len := nResultLen;
        if ( CryptGetHashParam( hash_item, HP_HASHVAL, Dest, @nResultLen, 0 ) and ( hash_len = nResultLen ) ) then
          Result := TRUE;
      end;
      CryptDestroyHash( hash_item );
    end;
    CryptReleaseContext( hash_prov, 0 );
  end;
end;


Понадобится модуль Wcrypt2 (приложил).
Использование:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.Button1Click(Sender: TObject);
type
  THASH_SHA256_DATA = packed array[ 0 .. 31 ] of Byte;
var
  hash: THASH_SHA256_DATA;
  S, SHex: AnsiString;
begin
  S := 'qwerty';
  if HashData( Pointer( S ), Length( S ), @hash, sizeof( hash ), CALG_SHA256 ) then begin
    SetLength( SHex, 2 * sizeof( hash ) );
    BinToHex( PAnsiChar( @hash ), PAnsiChar( SHex ), sizeof( hash ) );
    ShowMessage( SHex );
  end else
    ShowMessage( 'error' );
end;


Не тестировал, конечно, на XE8, но на старых дельфях и FPC под x86 и x64 работает.
...
Рейтинг: 0 / 0
04.07.2018, 17:43
    #39669624
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Релизаций хэшей завались, на все случаи жизни. Можно хоть из сорсов свежих версий стрельнуть, хоть сторонние заюзать
...
Рейтинг: 0 / 0
04.07.2018, 21:16
    #39669720
SHA в XE8
...
Рейтинг: 0 / 0
05.07.2018, 08:35
    #39669798
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
svdПосмотрел IdHASH и не нашел там что либо о SHA256.

TIdHashSHA256 и другие живут в IdHashSHA


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function GetSHA1(const txt: string): string;
var
  SHA1: TIdHashSHA1;
begin
// получаем md5-хэш для строки
  Result := '';

  SHA1 := TIdHashSHA1.Create;
  try
    Result := SHA1.HashStringAsHex(txt);
  finally
    FreeAndNil(SHA1);
  end;// екн
end;
...
Рейтинг: 0 / 0
05.07.2018, 08:43
    #39669801
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
krapotkinsystem.hash пришел в Seattle

здесь есть тесты на скорость и Delphi самый быстрый
http://www.webdelphi.ru/2016/01/samyj-bystryj-sposob-poluchit-xesh-sha1-dlya-fajla-v-delphi-10/
...
Рейтинг: 0 / 0
05.07.2018, 08:52
    #39669803
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
...
Рейтинг: 0 / 0
05.07.2018, 09:22
    #39669817
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Спасибо всем большое!
Уже набралось какое то количество разных библиотек. Сейчас буду пробовать, пока не подойдет. Смущает то, что у веех разные вызовы, но думаю, что разверусь.
...
Рейтинг: 0 / 0
05.07.2018, 12:16
    #39669962
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
X11krapotkinsystem.hash пришел в Seattle
здесь есть тесты на скорость и Delphi самый быстрый
http://www.webdelphi.ru/2016/01/samyj-bystryj-sposob-poluchit-xesh-sha1-dlya-fajla-v-delphi-10/
Тестировать скорость алгоритма хеширования, предоставляя ему данные прямым чтением с диска - клинический идиотизм, как по мне. Потому что там 100500 посторонних факторов могут влиять на скорость считывания с диска.
...
Рейтинг: 0 / 0
05.07.2018, 13:24
    #39670009
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
alekcvp,

Да там вроде размер буфера один и тот же при чтении для разных хешей, файл тоже один и тот же - так что общую закономерность отследить можно. Ну и если файл будет например 100Гб - ты его весь в память тянуть будешь?
...
Рейтинг: 0 / 0
05.07.2018, 14:00
    #39670035
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
DarkMasteralekcvp,

Да там вроде размер буфера один и тот же при чтении для разных хешей, файл тоже один и тот же - так что общую закономерность отследить можно. Ну и если файл будет например 100Гб - ты его весь в память тянуть будешь?
Одно чтение в кэш диска попало, во время другого кто-то ещё что-то читает - разница в разы. Тут виндовский дефраг проснулся, что-то оптимизировать решил, пока пользователь мышкой не дёргает - разница ещё в разы.
Чтобы протестировать именно скорость - делают небольшой буфер, с десяток мегабайт, и считают его хэш по кругу пару тысяч раз. Тогда относительно точные результаты будут.
...
Рейтинг: 0 / 0
05.07.2018, 14:04
    #39670037
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
alekcvp,

зачем причитать? тестов 5 провести и выбрать лучший/средний.
...
Рейтинг: 0 / 0
05.07.2018, 15:05
    #39670091
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SHA в XE8
Просто флуктуации алгоритмов на фоне времени чтения с харда будут незначительны.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SHA в XE8 / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]