يعد التشفير/فك التشفير عبر الأجهزة أمرًا محظورًا

StackOverflow https://stackoverflow.com/questions/64258

سؤال

أنا أستخدم مكالمة مماثلة لـ "CryptUnprotectData" (المكشوفة من Crypt32.dll) بين XP وVista.يعمل بشكل جيد في XP.أحصل على الاستثناء التالي عند تشغيل نظام التشغيل Vista:

"Decryption failed. Key not valid for use in specified state."

كما هو متوقع، تختلف إصدارات crypt32.dll بين XP وVista (يحتوي w/XP بالفعل على الإصدار الأحدث، ربما نتيجة لـ SP3 أو بعض التحديثات الأخرى).

وبشكل أكثر تحديدًا، أقوم بتشفير البيانات، ووضعها في السجل، ثم قراءتها وفك تشفيرها باستخدام "CryptUnprotectData".تم إيقاف تشغيل UAC.

هل رأى أحد هذا من قبل؟

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

المحلول

ال وظيفة كريبتونبروتيكتاتا تنص الوثائق على أنه يعمل عادةً فقط عندما يكون لدى المستخدم نفس بيانات اعتماد تسجيل الدخول مثل برنامج التشفير.

يشير هذا بالنسبة لي إلى أنه ربما يكون المفتاح مرتبطًا بالرمز المميز الحالي للمستخدم.منذ أن ذكرت نظام التشغيل Vista، هذا يجعلني أفكر في UAC والرموز المقيدة.

هل يمكنك أن تبين لنا بعض التعليمات البرمجية؟هل يمكنك أن تقدم لنا المزيد من المعلومات حول ما تفعله بالبيانات - على سبيل المثال:هل تقوم بنقله بين العمليات أو المستخدمين أو أجهزة الكمبيوتر؟

نصائح أخرى

لطيف - جيد.آمل أن تكون هذه هي حركتي القوية لهذا الأسبوع!؛-)

هذا يشير لي إلى أنه ربما يكون المفتاح مرتبطًا برمز المستخدم الحالي للمستخدم.

هذا كان هو.تبين أنني كنت أستخدم بيانات مشفرة من جهاز آخر (جهاز XP) وأحاول فك التشفير على جهاز يعمل بنظام التشغيل Vista.

كما تنص وثائق MSDN:

عادةً ما يمكن للمستخدم الذي يحمل نفس بيانات اعتماد تسجيل الدخول مثل Encrypter فك تشفير البيانات.فضلاً عن ذلك، يجب أن يتم التشفير وفك التشفير على نفس الكمبيوتر.

بمجرد إعادة تشفير البيانات الموجودة على جهاز Vista، يعمل فك التشفير كما هو متوقع.

شكرًا.

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