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