SHA1StreamRange
密码学
描述
AnsiString
/ByteRange哈希输入是字节区间 [0, FirstLength) 加上字节区间 [SecondStart, SecondStart + SecondLength),与 PDF 签名的 /Contents 布局一致,其中必须跳过
语法
Delphi
Function SHA1StreamRange(Input: TStream; FirstLength, SecondStart, SecondLength: Int64): AnsiString;参数
| Input | 要哈希的流;该函数在每个段之前都会定位,因此进入时的流位置无关紧要 |
|---|---|
| FirstLength | 从流位置 0 开始哈希的字节数,即半开区间 [0, FirstLength);0 表示跳过第一段 |
| SecondStart | 第二个哈希段开始的流偏移,通常为签名 /Contents 空洞之后的首个字节 |
| SecondLength | 从 SecondStart 开始哈希的字节数,即半开区间 [SecondStart, SecondStart + SecondLength);0 表示跳过第二段 |
返回值
打包进 AnsiString 的 20 字节原始 SHA-1 摘要;无法创建 CryptoAPI 提供程序或哈希对象、或某个哈希步骤失败时返回空字符串 |
说明
委托给共享的 SHAStreamRange 辅助函数,该函数获取 PROV_RSA_AES CryptoAPI 上下文,以最多 8000 字节的块哈希 CALG_SHA1,并忽略每次流读取的返回数量;与 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