SHA1StreamRange

Криптография

Описание

AnsiString

/ByteRangeХешируемые данные — это диапазон байтов [0, FirstLength), за которым следует диапазон [SecondStart, SecondStart + SecondLength), что соответствует раскладке /Contents подписи PDF, где дыра

Синтаксис

Delphi

Function SHA1StreamRange(Input: TStream; FirstLength, SecondStart, SecondLength: Int64): AnsiString;

Параметры

InputПоток для хеширования; функция позиционируется перед каждым сегментом, поэтому позиция потока на входе не важна
FirstLengthЧисло байтов, хешируемых с позиции потока 0, полуоткрытый диапазон [0, FirstLength); 0 пропускает первый сегмент
SecondStartСмещение в потоке, где начинается второй хешируемый сегмент; обычно первый байт после дыры /Contents подписи
SecondLengthЧисло байтов, хешируемых с SecondStart, полуоткрытый диапазон [SecondStart, SecondStart + SecondLength); 0 пропускает второй сегмент

Возвращаемые значения

Сырой 20-байтовый дайджест SHA-1, упакованный в AnsiString, или пустая строка, когда поставщик CryptoAPI или объект хеширования не может быть создан либо шаг хеширования завершается сбоем

Замечания

Делегирует общему помощнику SHAStreamRange, который получает контекст CryptoAPI PROV_RSA_AES, хеширует CALG_SHA1 блоками до 8000 байтов и игнорирует возвращаемое количество каждого чтения потока; отрицательные значения диапазона этот помощник не отклоняет, в отличие от вариантов SHA-3, а SHA-1 сохранён для совместимости с устаревшими подписями

Пример

Digest:= SHA1StreamRange(FS, ByteRange[0], ByteRange[2], ByteRange[3]);

См. также

SHA256ByteArray, SHA384ByteArray, SHA512ByteArray, SHA3_256ByteArray, SHA3_384ByteArray, SHA3_512ByteArray, SHA256StreamRange, SHA384StreamRange, SHA512StreamRange, SHA3_256StreamRange, SHA3_384StreamRange, SHA3_512StreamRange, SHAKE256ByteArray, SHAKE256StreamRange