powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / SHA в XE8
21 сообщений из 21, страница 1 из 1
SHA в XE8
    #39669509
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsem priven.

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

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

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

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

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

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

https://github.com/fundamentalslib/fundamentals5/blob/master/Source/Utils/flcHash.pas
...
Рейтинг: 0 / 0
SHA в XE8
    #39669570
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SHA в XE8
    #39669624
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Релизаций хэшей завались, на все случаи жизни. Можно хоть из сорсов свежих версий стрельнуть, хоть сторонние заюзать
...
Рейтинг: 0 / 0
SHA в XE8
    #39669720
...
Рейтинг: 0 / 0
SHA в XE8
    #39669798
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SHA в XE8
    #39669801
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinsystem.hash пришел в Seattle

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

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

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

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


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