سؤال

لديّ نظام عميل وخادم يقوم بتشغيل المهام المجدولة بانتظام والتواصل من خلال ملفات XML التي تم تشفيرها بواسطة GPG. تم تبادل جميع المفاتيح العامة المطلوبة بنجاح بين العميل والخادم. يتم إجراء مكالمات التشفير وفك التشفير من ملف دفعي.

تشفير بناء الجملة

gpg.exe-batch--yes-recipient ٪ 1-output ٪ 4-passphrase ٪ 5-local-user ٪ 2-signpt-encrypt ٪ 3

فك تشفير بناء الجملة

gpg.exe -batch -yes -output ٪ 3 -passphrase ٪ 4 -decrypt ٪ 2 2> ٪ 1

يقوم العميل بإنشاء ملف XML ، ويقوم بتشفيره باستخدام GPG باستخدام مفتاح الخادم العام ، وعلامات مع مفتاح خاص وتحميله على موقع FTP للخادم. يتحقق الخادم بانتظام من الملفات الجديدة في مجلد FTP. لأي ملف جديد ، يقوم بإلغاء فك تشفيره باستخدام GPG ثم يعالج XML داخل الملف.

بالنسبة لبعض ملفات XML التي يحاول الخادم فك تشفيرها ، أتلقى خطأً على النحو التالي:

GPG: block_filter 00aa8400: خطأ في القراءة (الحجم = 7841 ، a-> الحجم = 395)

GPG: MDC_PACKET مع تشفير غير صالح

GPG: فشل فك التشفير: حزمة غير صالحة

GPG: block_filter: بايت معلق!

النقطة التي تجدر الإشارة إليها هي أن هذا لا يحدث مع جميع الملفات ولكن مع بعض الملفات فقط. لم أتمكن من العثور على أي قواسم مشتركة بين الملفات التي تفشل عليها.

هل أي شخص مألوف لماذا يعني هذا الخطأ؟ أي اقتراحات للمساعدة في تتبع هذا الترحيب.

هل كانت مفيدة؟

المحلول

وأخيرا برزت عليه. لم يكن GPG هو الجاني هنا. عندما كان الخادم يتحقق من الملفات في المجلد المحدد ، كان يستخدم طريقة إلحاق (FileHandler) على Delphi لاختبار ما إذا كان يمكن فتح الملف. ولكن كان لهذه الطريقة حالة غريبة كما لو أنها وجدت حرف ASCII 26 (أي Ctrl+z) في آخر 128 بايت من الملف ، فإنه سيزيل كل شيء من هذا الحرف وحتى نهاية الملف. تسبب هذا في حذف جزء من الملفات المشفرة وتسبب بعد ذلك في الخطأ أعلاه عند فك تشفيره من خلال GPG. بعد استبدال طريقة الإلحاق بإعادة تعيين (FileHandler) ، لم تعد الملفات المشفرة تعديلًا وعمل Decryption بشكل مثالي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top