PDFium Delphi Component Docs

FPdfSha1 الوحدة

الوحدة: FPdfSha1
تنفيذ SHA-1 بـ Pascal خالص مع سياق تدريجي init/update/final ومساعدات بطلب واحد، موجود حتى تستطيع مطابقة شهادة عبر بصمتها SHA-1

الصياغة

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;

الوصف

ينفذ FPdfSha1 خوارزمية SHA-1 بـ Pascal خالص دون أي اعتماد يتجاوز SysUtils، فيبقى المكتبة مكتفية بذاتها على كل مترجم مدعوم؛ تتبع دالة الضغط FIPS 180-4 6.1، وتحشو قاعدة الحشو في FIPS 180-4 5.1.1 الرسالة حتى 56 mod 64 بايتًا قبل ثمانية بايتات من طول البتات بالترتيب كبير النهاية؛ وعمليات التحميل والتخزين صريحة البايت وبالترتيب كبير النهاية، فتبقى النتائج متطابقة على كل معالج تستهدفه المكتبة

تُجزِّئ واجهة SHA1Init / SHA1Update / SHA1Final التدريجية المدخلات المقدَّمة على دفعات؛ ويمرر SHA1Update كتل 64 بايت الكاملة مباشرة إلى دالة التحويل ولا يخزن سوى الباقي في TSHA1Context، لذا ينتج عن تغذية كتلة كبيرة واحدة وتغذية البايتات نفسها على دفعات صغيرة الملخص نفسه

يعمل SHA1Bytes و SHA1Of مساعدين بطلب واحد على مصفوفة بايتات أو مخزن غير مُنمَّط بطول معلوم؛ ويُقبل TBytes فارغ ويُجزَّأ بوصفه رسالة فارغة؛ ويصيغ SHA1Hex قيمة TSHA1Digest كسلسلة ست عشرية بحروف صغيرة من 40 محرفًا، وهي الصيغة التي تُقارن بها بصمة الشهادة عادةً

الدوال

الدالةالوصف
SHA1Initتهيئ سياق تجزئة إلى الحالة الابتدائية في FIPS 180-4 5.3.1 وتمسح مخزنه وعداداته
SHA1Updateتغذي سياقًا مفتوحًا بعدد BufLen بايت من مخزن غير مُنمَّط؛ والطول الصفر لا يفعل شيئًا
SHA1Finalتطبق كتلة الحشو والطول ثم تعيد ملخص 20 بايت
SHA1Bytesتجزئة بطلب واحد لمصفوفة بايتات
SHA1Ofتجزئة بطلب واحد لمخزن غير مُنمَّط بطول معلوم
SHA1Hexتنسق الملخص كسلسلة ست عشرية بحروف صغيرة من 40 محرفًا

الأنواع

النوعالوصف
TSHA1Digestملخص SHA-1 بطول 20 بايت، وهو نوع نتيجة كل نقاط دخول التجزئة في الوحدة
TSHA1Contextسياق تجزئة تدريجي: يحمل State كلمات العمل الخمس، ويحمل Buffer كتلة الرسالة الجزئية البالغة 64 بايت، ويعد BufCnt البايتات الموجودة حاليًا في ذلك المخزن، ويراكم Length الطول الكلي للرسالة بالبايتات

ملاحظات

ليست SHA-1 ملخص توقيع في هذه المكتبة ويجب ألا تصبح كذلك؛ فحزمة PAdES توقّع بـ SHA-256 في كل موضع، سواء لملخص الرسالة أو السمات الموقَّعة أو طلب الطابع الزمني على حد سواء، ولا يجوز نقل أي شيء من مسار التوقيع إلى هذه الوحدة

وُجد FPdfSha1 لغرض واحد: مطابقة شهادة مع بصمة SHA-1 التي يحملها TPadesSignerOptions؛ فخلفية الرموز تستقبل شهادة DER وعليها إجراء تلك المقارنة بنفسها، فتُجزِّئ الـ DER بـ SHA1Bytes وتقارن SHA1Hex مع البصمة المضبوطة دون حساسية لحالة الأحرف؛ وفي Windows يحل مخزن الشهادات البصمة أثناء بحث الشهادة، فلم تحتد خلفية Windows يومًا إلى تنفيذ خاص بها

إذا كنت تبحث عن تجزئة لكود جديد، فهذه ليست الخيار العام؛ فلا تصلح SHA-1 في أي موضع تهم فيه مقاومة التصادم، بما في ذلك ملخصات المستندات والسمات الموقَّعة وفحوص السلامة؛ استخدم FPdfSha256 بدلًا منها، أو FPdfSha512 أو FPdfSha3 عندما تريد عائلة ملخصات أطول أو مختلفة

انظر أيضًا

FPdfSha256, FPdfSha512, FPdfSha3, FPdfCrypto, FPdfCryptoWin, FPdfPkcs11