هل يمكنني استخدام مفاتيح RSICREPTOSERVICEPROVIRE العامة / الخاصة إلى Interop مع Crypto ++؟
-
06-09-2019 - |
سؤال
لقد قمت بإنشاء مفتاح عام / خاص باستخدام rsacryptoserviceProvider. وحفظها ك XML. يمكنني استخدام هذا لتشفير / فك تشفير / علامة والتحقق من البيانات في .NET.
لدي تطبيق آخر يهدف إلى تشغيله على خادم Linux. أقوم بتطويره في C ++ وأستخدم Crypto ++ لاحتياجات التشفيس الخاصة بي.
أريد مشاركة البيانات بين هذين التطبيقين، ولكن للقيام بذلك أحتاج إلى تحويل rsaparameters إلى مفاتيح عامة / خاصة التي يمكن أن تفهمها crypto ++.
أنا أيضا مفتوح لاستخدام تحويل المفاتيح العامة / الخاصة التي تم إنشاؤها بواسطة Crypto ++ إلى rsaparameters إذا كان من الأسهل القيام به.
أيه أفكار؟
المحلول
الطريقة الأسهل هي ربما لاستخدام rsaparameters مباشرة بدلا من الذهاب فوق XML.
فقط قم بتخزين صفيفات البايت الموجودة في RSaparameters في ملف باستخدام تنسيق من اختيارك. قراءة صفيفات البايت مرة أخرى في برنامج C ++ الخاص بك وإنشاء Cryptopp :: Integer.ق منهم. استخدام تلك الأعداد الصحيحة لتهيئة rsafunction. (المفتاح العام) أو invertiblersafunction. (مفتاح سري).
الطريقة العكسية هي تباطؤ: أي
RSAFunction publicKey = ...;
size_t modulusLength = publicKey.getModulus().ByteCount();
unsigned char * modulus = new unsigned char[modulusLength];
publicKey.getModulus().Encode(modulus, modulusLength);
// similarly with PublicExponent and remember to clean up the arrays.
ونقل المصفوفات إلى تطبيقك .NET-Application الخاص بك، حيث يمكنك استخدامها لتهيئة rsaparameters.