मैं कुछ डेटा एन्क्रिप्ट करने के लिए सी ++ में डीपीएपीआई का उपयोग कर रहा हूं जिसे मुझे फ़ाइल में स्टोर करने की आवश्यकता है। बात यह है कि मैं सी # से फाइल को पढ़ने की जरूरत है, तो मैं करने में सक्षम होने की जरूरत है:डीपीएपीआई का उपयोग करके एन्क्रिप्ट करते समय मुझे अलग-अलग आउटपुट क्यों मिलते हैं?
सी ++ एन्क्रिप्ट, सी डिक्रिप्ट ++ (अच्छा काम कर रहा है)
सी # एन्क्रिप्ट, सी # डिक्रिप्ट (अच्छा काम कर रहा है)
सी ++ एन्क्रिप्ट, सी # डिक्रिप्ट और उपाध्यक्ष प्रतिकूल (काम नहीं कर रहा)
सी # में मैं तरीकों CryptProtectData और CryptUnprotectData PInvoke को DllImport उपयोग कर रहा हूँ, और मैं उन्हें लागू के रूप में समझाया here। मुझे पता है कि सी # में मैं संरक्षित डेटा वर्ग में निहित विधियों का उपयोग कर सकता हूं लेकिन यह सुनिश्चित करने के लिए कि मैं दोनों कोड (सी ++ और सी #) देख और काम करता हूं, मैं इसे इस तरह से कर रहा हूं (DllImport का उपयोग करके)।
अब अजीब बात यह है कि दोनों कोड एक ही लग रहा है, भले ही मैं इस पाठ के लिए उदाहरण के लिए अलग अलग आउटपुट मिलता है, यह है:
"सादा पाठ"
C++ मैं:
01 00 00 00 डी 0 8 सी 9 डी डीएफ 01 15 डी 1 11 8 सी 7 ए 00 सी0 4 एफ सी 2 9 7 ईबी 01 00 00 00 2 ई 6 एफ 88 86 ई 6 16 9 बी 4 एफ 9 बी बीएफ 35 डीए 9 एफ सी 6 ईसी 12 00 00 00 00 02 00 00 00 00 00 03 66 00 00 ए 8 00 00 00 10 00 00 00 93 06 68 39 डीबी 58 एफई ई 9 सी 4 1 एफ बी 3 डी 7 बी 0 ए बी 7 48 00 00 00 00 80 00 00 ए0 00 00 00 10 00 00 00 36 4 ई 84 05 0 डी 4 ए 34 15 9 7 डीसी 5 बी 1 एफ 6 सी ए 4 1 9 डी 9 10 00 00 00 एफ 5 33 9 एफ 55 49 94 26 54 2 बी सी 8 सीबी 70 7 बी एफई चुनाव आयोग 96 14 00 00 00 सी 5 23 डीए बीए सी 8 23 6C 0B बी 3 88 69 06 00 95 29 एई 76 ए 7 63 इ 4
और सी # में मैं:
01 00 00 00 D0 8C 9 डी डीएफ 01 15 डी 1 11 8 सी 7 ए 00 सी0 4 एफ सी 2 9 7 ईबी 01 00 00 00 2 ई 6 एफ 88 86 ई 6 16 9 बी 4 एफ 9 बी बीएफ 35 डीए 9 एफ सी 6 ईसी 12 00 00 00 00 02 00 00 00 00 00 03 66 00 00 ए 8 00 00 00 10 00 00 00 34 सी 4 40 सीडी 91 ईसी 94 66 ई 5 ई 9 23 एफ 7 9ई 04 9 सी 83 00 00 00 00 04 80 00 00 ए0 00 00 00 10 00 00 00 12 54 1 ई 26 72 26 0 ए डी 1 11 1 डी 4 डी ईएफ 13 1 डी बी 2 6 एफ 10 00 00 00 81 9 डी 46 37 डी 1 68 5 डी 17 बी 8 23 78 48 18 ईडी 06 ईडी 14 00 00 00 ई 4 45 07 1 सी 08 55 99 80 ए 4 59 डी 9 33 बीसी 0 बी 71 35 3 9 05 सी 4 बीबी
जैसा कि आप देख सकते हैं कि पहले वर्ण समान हैं लेकिन शेष ar ई नहीं, इसलिए अगर किसी को यह पता चल जाए कि यह क्यों हो रहा है, तो मैं मदद की सराहना करता हूं।
धन्यवाद।
कोड सी ++ में:
सी # में
value = "plain text";
DATA_BLOB DataIn;
DATA_BLOB DataOut;
BYTE *pbDataInput =(BYTE *)(char*)value.c_str();
DWORD cbDataInput = strlen((char *)pbDataInput)+1;
DataIn.pbData = pbDataInput;
DataIn.cbData = cbDataInput;
CryptProtectData(&DataIn, NULL, NULL, NULL, NULL, 0, &DataOut))
कोड:
(आप कैसे मेरी सी # कोड here लग रहा है देख सकते हैं, के बाद से इस माइक्रोसॉफ्ट उदाहरण में एक के समान है)
कुछ स्वरूपित हेक्स संपादक उन स्क्रीनशॉट के बजाय डेटा उदाहरण की तरह अच्छा होगा। – schnaader
स्क्रीनशॉट नहीं बना सकते हैं। –
@ न्यूटन: आप इसे एक बेहतर टैब पर देखने के लिए ग्राफ़िक के लिंक को खोल सकते हैं (फ़ायरफ़ॉक्स में "ग्राफिक दिखाएं" काम भी) – schnaader