SHA256StreamRange
Криптография
Описание
AnsiString
/ByteRangeХешируемые данные — это диапазон байтов [0, FirstLength), за которым следует диапазон [SecondStart, SecondStart + SecondLength), что соответствует раскладке /Contents подписи PDF, где дыра
Синтаксис
Delphi
Function SHA256StreamRange(Input: TStream; FirstLength, SecondStart, SecondLength: Int64): AnsiString;Параметры
| Input | Поток для хеширования; функция позиционируется перед каждым сегментом, поэтому позиция потока на входе не важна |
|---|---|
| FirstLength | Число байтов, хешируемых с позиции потока 0, полуоткрытый диапазон [0, FirstLength); 0 пропускает первый сегмент |
| SecondStart | Смещение в потоке, где начинается второй хешируемый сегмент; обычно первый байт после дыры /Contents подписи |
| SecondLength | Число байтов, хешируемых с SecondStart, полуоткрытый диапазон [SecondStart, SecondStart + SecondLength); 0 пропускает второй сегмент |
Возвращаемые значения
Сырой 32-байтовый дайджест SHA-256, упакованный в AnsiString, или пустая строка, когда поставщик CryptoAPI или объект хеширования не может быть создан либо шаг хеширования завершается сбоем |
Замечания
Делегирует общему помощнику SHAStreamRange, который получает контекст CryptoAPI PROV_RSA_AES, хеширует CALG_SHA_256 блоками до 8000 байтов и игнорирует возвращаемое количество каждого чтения потока; отрицательные значения диапазона этот помощник не отклоняет, в отличие от вариантов SHA-3
Пример
Digest:= SHA256StreamRange(FS, ByteRange[0], ByteRange[2], ByteRange[3]);См. также
SHA256ByteArray, SHA384ByteArray, SHA512ByteArray, SHA3_256ByteArray, SHA3_384ByteArray, SHA3_512ByteArray, SHA1StreamRange, SHA384StreamRange, SHA512StreamRange, SHA3_256StreamRange, SHA3_384StreamRange, SHA3_512StreamRange, SHAKE256ByteArray, SHAKE256StreamRange