sha256cryptoserviceprovider وترتبط ممكنة للاستخدام على ويندوز إكس بي؟

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

سؤال

هل من الممكن استخدام SHA256CRYPTOSERVICEPROVIDER ومقدمي SHA2 ذي الصلة على نظام التشغيل Windows XP؟ أعلم أن مقدمي الخدمات يستخدمون خدمات التشفير الموجودة في نظام التشغيل Vista وما فوق هل من الممكن تثبيت هذه الخدمات في XP من Microsoft؟

تعديل: يجب أن أقدم معلومات أكثر أن الوثائق الموجودة على MSDN خاطئة فيما يتعلق بهذا المدعوم في نظام التشغيل Windows XP. يرى http://connnect.microsoft.com/visualstudio/feedback/viewfeedback.aspx؟feedbackid=355031. حيث يتم الاعتراف بهذا ما قبل Microsoft حسب التصميم. ومع ذلك، لا يوجد أي عمل في القائمة المدرجة في أي مكان (الذي رأيته) لذلك لم أكن متأكدا مما إذا كان من الممكن تثبيت الخدمات التي يتطلب ذلك العمل بشكل صحيح أو إذا كان الأمر مثل إمالة WINDWILS في محاولة لتثبيت IIS 6 أو 7 على WinXP.

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

المحلول

يبدو أن وثائق MSDN مناسبة بمعنى ذلك ينبغي تكون مدعومة في XP SP3 حسب التصميم، وإذا لم يكن كذلك، فهذا فقط بسبب حشرة في .NET 3.5.

استخدم كل من AescryptoserviceProvider و SHA256CryptoserviceProvider نفس خدمة Cryptograhics المسماة "Microsoft المحسنة RSA و AES Cryptographic Provider". ضمن XP، يكون اسم الخدمة مختلفا قليلا: "Microsoft Hevanced RSA و AES Cryptographic Provider (النموذج الأولي)". وبعد يقوم منشئ AescryptoserviceProvider بإجراء فحص بسيط:

string providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider";
if(Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
{
    providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
}

يقوم منشئون shaxxxcryptoserviceProvider القيام به ليس تحقق من الاسم (النموذج الأولي)، وهذا هو السبب في فشلهم في XP. إذا فعلوا ذلك، فسوف ينجحون.

هناك حل بسيط على جهاز كمبيوتر معين. انتقل إلى مفتاح التسجيل HKEY_LOCAL_MACHINE Software Microsoft Cryptography Defaults Provider, ، ابحث عن المفتاح الفرعي المسبب المفككت "Microsoft محسن RSA و AES Cryptographic Former (النموذج الأولي)"، وتصديره إلى .reg، قم بتحرير هذا .reg وحذف "(النموذج الأولي)" من اسمه. عند استيراده مرة أخرى، سيتم تكرار المفتاح الأصلي إلى المفتاح الجديد دون (النموذج الأولي)، مع نفس المحتويات. من الآن فصاعدا، ستعمل SHA256CryptoserviceProvider على جهاز XPSP3 هذا.

نصائح أخرى

لقد نجحت في النجاح مع المقتطف التالي، على الرغم من أنني لست راضيا عن ذلك حقا ونشر شكلا على السؤال بخصوص العديد من طرق عشوائية على ما يبدو SHA512 في الموعد. يتم اختبار هذا على نظام التشغيل Windows XP، 7، وربما فيستا (لا أتذكر).

using System.Security.Cryptography;

        SHA512 hash;
        try
        {
            hash = new SHA512Cng( );
        }
        catch ( PlatformNotSupportedException )
        {
            hash = SHA512.Create( );
        }

أعتقد أن هذا يجب أن يعمل الشيء نفسه مع SHA256.

أيضا، مقارنة إخراج كلا الإصدارين مع أداة UNIX SHA2 تشير إلى أنها تنفذ بشكل صحيح Sha512 بشكل صحيح.

من MSDN: sha256cryptoserviceprovider

المنصات: نظام التشغيل Windows Vista، Windows XP SP2، Windows Server 2003

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