سؤال

لدينا موقف في منتجنا حيث تم تخزين بعض البيانات لفترة طويلة في قاعدة بيانات التطبيق كسلسلة SQL (اختيار خادم MS SQL أو sybase SQL في أي مكان) والتي تم تشفيرها عبر وظيفة Windows API تشفير. (مباشر وقابل للتشفير)

تكمن المشكلة في أن CryptEncrypt يمكن أن ينتج قيم NULL في المخرجات، مما يعني أنه عند تخزينها في قاعدة البيانات، فإن معالجة السلسلة ستقوم في مرحلة ما باقتطاع نص CipherText.

من الناحية المثالية، نود استخدام خوارزمية من شأنها إنتاج نص CipherText لا يحتوي على القيم الخالية لأن ذلك سيؤدي إلى أقل قدر من التغيير في قواعد البيانات الموجودة (تغيير عمود من سلسلة إلى ثنائية والتعليمات البرمجية للتعامل مع الثنائي بدلاً من السلاسل) وقم فقط بفك تشفير البيانات الموجودة وإعادة التشفير باستخدام الخوارزمية الجديدة في وقت ترقية قاعدة البيانات.

لا يلزم أن تكون الخوارزمية هي الأكثر أمانًا، حيث أن قاعدة البيانات موجودة بالفعل في بيئة آمنة إلى حد معقول (ليست شبكة مفتوحة/الشبكات البينية) ولكن يجب أن تكون أفضل من ROT13 (والتي يمكنني تقريبًا فك تشفيرها في رأسي) الآن!)

يحرر:راجع للشغل، أي سبب معين لتغيير النص المشفر إلى النص المشفر؟يبدو أن النص المشفر يستخدم على نطاق واسع ...

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

المحلول

ستحظى أي خوارزمية شبه لائقة بفرصة قوية لتوليد قيمة NULL في مكان ما في النص المشفر الناتج.

لماذا لا تفعل شيئا مثل ترميز قاعدة 64 النقطة الثنائية الناتجة قبل الاستمرار في قاعدة البيانات؟(تنفيذ عينة في C++).

نصائح أخرى

تخزين التجزئة فكرة جيدة.ومع ذلك، يرجى قراءة جيف بالتأكيد من المحتمل أنك تقوم بتخزين كلمات المرور بشكل غير صحيح.

هذا طريق مثير للاهتمام OJ.نحن نبحث في جدوى طريقة غير قابلة للعكس (ما زلنا نتأكد من أننا لا نسترجع البيانات بشكل صريح لفك تشفيرها) على سبيل المثال.فقط قم بتخزين التجزئة للمقارنة عند الإرسال

يبدو أن المطور الذي يتعامل مع هذا الأمر سوف يغلف التشفير الحالي به yEnc للحفاظ على سلامة الجدول حيث أن البيانات تحتاج إلى أن تكون قابلة للاسترجاع، وهذا يوفر كل هذا العبث الفوضوي مع احتمالات لا نهائية....uhhh تغيير أنواع الأعمدة في المنشآت الراسخة.هتاف الرفاق

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