HotXLS Docs

خاصية EncryptionPassword

إرجاع أو تعيين كلمة المرور المستخدمة لتشفير مصنف BIFF8 (.xls) عند SaveAs. يؤدي تعيين قيمة غير فارغة إلى إنتاج ملف محمي بكلمة مرور متوافق مع Excel: يطالب Microsoft Excel و LibreOffice Calc وقارئات BIFF8 الأخرى بكلمة المرور عند الفتح ويرفضون الوصول عندما تكون خاطئة. قراءة/كتابة WideString (القيمة الافتراضية هي سلسلة فارغة، متوفرة منذ v2.32.0)

بناء الجملة

property EncryptionPassword: WideString;

ملاحظات

يصدر مسار الكتابة سجل BIFF8 FILEPASS ($002F) مباشرة بعد BOF الخاص بالمصنف ويقوم بتشفير RC4 لكل نص سجل لاحق. تنسيق السلك هو vMajor=1، vMinor=1 (تشفير "Office 97/2000 Compatible"). يتم إنشاء Salt و Verifier بحجم 16 بايت من خلال Windows CryptGenRandom بدلا من Pascal Random. يتم الحفاظ على إعادة اشتقاق مفتاح الكتلة عند كل حد 1024 بايت بحيث يتم تشفير المصنفات الكبيرة وسلاسل SST CONTINUE والتدفقات متعددة الأوراق بشكل صحيح

ينطبق التشفير على BIFF8 (xlExcel97) فقط — يظل مسار حفظ BIFF5 نصا عاديا. تحافظ EncryptionPassword الفارغة على إخراج النص العادي القديم وهي الافتراضية، لذا فإن التطبيقات الحالية التي لا تستدعي المعين أبدا لا تتأثر

ملاحظة أمنية: يستخدم BIFF8 RC4 مع vMajor=1/vMinor=1 مفتاحا 40 بت، والذي يعتبر مكسورا وفقا لمعايير 2025. استخدم هذه الميزة للتوافق مع واجهة مستخدم الحماية بكلمة مرور الكلاسيكية في Excel، وليس لسرية البيانات الحساسة. للحصول على أمان حقيقي، يفضل إخراج XLSX مع AES

مثال

يحفظ هذا المثال ملف .xls محميا بكلمة مرور

Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('Confidential.xls', xlExcel97);