PDFium Delphi Component Docs

FPdfSha1 birimi

Unit: FPdfSha1
Artımlı init/update/final bağlamı ve tek seferlik yardımcılarla saf Pascal SHA-1 uygulaması; bir sertifikanın SHA-1 parmak iziyle eşleştirilebilmesi için mevcuttur

Syntax

TSHA1Digest = array[0..19] of Byte;

TSHA1Context = record
  State: array[0..4] of Cardinal;
  Buffer: array[0..63] of Byte;
  BufCnt: Cardinal;
  Length: UInt64;
end;

procedure SHA1Init(out Ctx: TSHA1Context);
procedure SHA1Update(var Ctx: TSHA1Context; const Buf; BufLen: Cardinal);
procedure SHA1Final(var Ctx: TSHA1Context; out Digest: TSHA1Digest);
function SHA1Bytes(const B: TBytes): TSHA1Digest;
function SHA1Of(const Buf; BufLen: Cardinal): TSHA1Digest;
function SHA1Hex(const Digest: TSHA1Digest): string;

Description

FPdfSha1, SHA-1'i SysUtils ötesinde hiçbir bağımlılık olmadan saf Pascal'da uygular; böylece kütüphane desteklenen her derleyicide kendi kendine yeterli kalır. Sıkıştırma işlevi FIPS 180-4 6.1'i izler ve FIPS 180-4 5.1.1'in dolgu kuralı, sekiz baytlık big-endian bit uzunluğundan önce iletiyi 56 mod 64 bayta doldurur. Yüklemeler ve saklamalar bayt bazında açık big-endian'dır; bu, sonuçların kütüphanenin hedeflediği her CPU'da özdeş kalmasını sağlar

Artımlı SHA1Init / SHA1Update / SHA1Final API'si parçalar halinde verilen girdiyi hash'ler. SHA1Update, bütün 64 baytlık blokları doğrudan dönüşüme geçirir ve kalanı yalnızca TSHA1Context içinde tamponlar; böylece tek seferde büyük bir blok vermekle aynı baytları birkaç parça halinde vermek aynı özeti üretir

SHA1Bytes ve SHA1Of, bir bayt dizisi ya da verilen uzunlukta türsüz bir tampon üzerinde çalışan tek seferlik yardımcılardır; boş bir TBytes kabul edilir ve boş ileti olarak hash'lenir. SHA1Hex, bir TSHA1Digest değerini küçük harfli 40 karakterlik bir hex dizesi olarak işler; sertifika parmak izleri normalde bu biçimde karşılaştırılır

Functions

FunctionDescription
SHA1InitBir hash bağlamını FIPS 180-4 5.3.1 başlangıç durumuna getirir ve tamponunu ile sayaçlarını temizler
SHA1UpdateTürsüz bir tampondan BufLen baytı açık bir bağlama verir; sıfır uzunluk işlemsizdir (no-op)
SHA1FinalDolgu ve uzunluk bloğunu uygular, ardından 20 baytlık özeti döndürür
SHA1BytesBir bayt dizisinin tek seferlik hash'i
SHA1OfVerilen uzunlukta türsüz bir tamponun tek seferlik hash'i
SHA1HexBir özeti küçük harfli 40 karakterlik hex dizesi olarak biçimlendirir

Types

TypeDescription
TSHA1Digest20 baytlık SHA-1 özeti; birimdeki her hash giriş noktasının sonuç türü
TSHA1ContextArtımlı hash bağlamı: State beş çalışma sözcüğünü tutar, Buffer eksik 64 baytlık ileti bloğunu tutar, BufCnt o anda tampondaki baytları sayar ve Length toplam ileti uzunluğunu bayt olarak biriktirir

Remarks

SHA-1 bu kütüphanede bir imzalama özeti değildir ve hiçbir zaman olmamalıdır. PAdES yığını; ileti özeti, imzalı öznitelikler ve zaman damgası isteği dahil her yerde SHA-256 ile imzalar. İmzalama yolundaki hiçbir şey bu birime taşınmamalıdır

FPdfSha1 tek bir iş için vardır: bir sertifikayı TPadesSignerOptions içindeki SHA-1 parmak iziyle eşleştirmek. Bir token arka ucu sertifika DER'ini alır ve bu karşılaştırmayı kendisi yapmak zorundadır; bu yüzden DER'i SHA1Bytes ile hash'ler ve SHA1Hex çıktısını yapılandırılmış parmak iziyle, büyük/küçük harf duyarsız olarak karşılaştırır. Windows'ta sertifika deposu parmak izini sertifika araması sırasında çözer; bu yüzden Windows arka ucunun hiç kendi uygulamasına gereksinim duyulmadı

Yeni kod için bir hash arıyorsanız bu, genel amaçlı seçim değildir. SHA-1; belge özetleri, imzalı öznitelikler ve bütünlük denetimleri dahil çarpışma direncinin önemli olduğu her yerde uygunsuzdur. Bunun yerine FPdfSha256 kullanın; daha uzun ya da farklı bir özet ailesi gerekiyorsa FPdfSha512 ya da FPdfSha3 kullanın

See Also

FPdfSha256, FPdfSha512, FPdfSha3, FPdfCrypto, FPdfCryptoWin, FPdfPkcs11