आईपीए संरचना के रूप में सिर्फ एक ज़िपित संकलित कोड छवियों की तरह & मीडिया सामग्री & ऑडियो फ़ाइल है जिसमें, मैं कैसे से सामग्री की रक्षा कर सकते निकाला जाता है और दूसरों के द्वारा चोरी होने? क्या आईपीए में कोई एन्क्रिप्शन जोड़ सकता है?एन्क्रिप्शन (आईपीए)
उत्तर
इस उत्तर कहा गया है कि आवेदन पहले से ही समय यह अपने उपयोगकर्ताओं के उपकरणों पर हो जाता है द्वारा एन्क्रिप्टेड है: Does Apple modify iOS application executables on apps submitted to the App Store?
क्षमा करें, कि केवल आवेदन द्विआधारी है। अन्य मीडिया एन्क्रिप्टेड नहीं हैं, और नहीं, .ipa को एन्क्रिप्ट करने का कोई तरीका नहीं है। आप अपने सिस्टम पर अपनी छवियों और अन्य मीडिया को एन्क्रिप्ट करने का प्रयास कर सकते हैं, ऐप चलाने पर उन संसाधनों को डिक्रिप्ट करने के लिए एप्लिकेशन कोड का एक गुच्छा प्रदान कर सकते हैं, और फिर आपका डिक्रिप्शन कोड एन्क्रिप्टेड एप्लिकेशन बाइनरी का हिस्सा बन जाएगा। आप एन्क्रिप्टेड आईपीए सबमिट नहीं कर सकते हैं, हालांकि, यह फ़ाइल को सीधे एक्सकोड से आउटपुट करने की आवश्यकता है।
आपकी टिप्पणी के जवाब में, मैंने जो इस्तेमाल किया है वह है कॉमनक्रिप्टो। आपको #import <CommonCrypto/CommonCryptor.h>
की आवश्यकता है, और मेरे शुरुआती बिंदु के रूप में उपयोग किए जाने वाले कार्यान्वयन this category on NSMutableData थे।
ऊपर श्रेणी के सरल उपयोग का उदाहरण:
NSMutableData *imageData = [NSMutableData dataWithContentsOfFile:pathToEncryptedFile];
[imageData decryptWithKey:@"SuperSecretDecryptionKey"];
UIImage *decryptedImage = [UIImage imageWithData:imageData];
महत्वपूर्ण यहाँ नोट: किसी एक जेलब्रेक iphone पर अपने .app
पर strings
उपयोगिता को चलाने के लिए, या भी एक iPhone पर वे फाइल सिस्टम का उपयोग किया गया था, तो यूएसबी के माध्यम से, उन्हें आपके ऐप में घोषित सभी तारों की एक सूची मिल जाएगी। इसमें "SuperSecretDecryptionKey" शामिल है। तो आप एक स्ट्रिंग डिक्रिप्शन कुंजी की ऑन-द-फ्लाई पीढ़ी करने के लिए एक पूर्णांक, फ़्लोटिंग-पॉइंट या अन्य स्थिरता का उपयोग करना चाह सकते हैं, या सुनिश्चित कर सकते हैं कि चीजें डिक्रिप्ट करने के लिए आप जिस स्ट्रिंग का उपयोग करते हैं वह सामान्य सिस्टम स्ट्रिंग के समान ही है कोई भी इसे सही कुंजी के रूप में संदिग्ध नहीं करता है। अस्पष्टता के माध्यम से सुरक्षा, इस मामले में, फायदेमंद है।
अद्यतन: आप बात की इस तरह के AQToolkit
की जांच करनी चाहिए, यह काफी व्यापक है।
एन्क्रिप्ट करने के लिए/*.strings
फ़ाइलों को डिक्रिप्ट, आप (जो आप हेक्साडेसिमल वापस देना, या किसी भी अक्षरांकीय अक्षर शायद) कुछ तरीके से कुंजी और मान तार एन्क्रिप्ट करना चाहिए, और जब आप किसी दिए गए मूल्य का उपयोग करना चाहते हैं, LicenceNumber
कहते हैं, ऐसा करें:
NSMutableData *keyToRequest = [@"LicenceNumber"
dataUsingEncoding:NSUTF8StringEncoding];
[keyToRequest encryptWithKey:@"SuperSecretEncryptionKey"];
NSMutableData *valueToRequest = [[NSBundle mainBundle]
localizedStringForKey:[NSString
stringWithUTF8String:[keyToRequest bytes]]
value:@"No licence"
table:@"EncryptedStringsFile"];
[valueToRequest decryptWithKey:@"SuperSecretDecryptionKey"];
स्पष्ट उत्तर। इन-ऐप डिक्रिप्शन निश्चित रूप से फोन सीपीयू उपयोग की लोडिंग में वृद्धि करेगा, लेकिन मैं वास्तव में हमारी सामग्री की रक्षा करना चाहता हूं। क्या आप मीडिया सामग्री को एन्क्रिप्ट और डिक्रिप्ट करने के लिए कम-गणना-शक्ति-आवश्यक तरीका सुझा सकते हैं? – Raptor
* .strings फ़ाइलों के बारे में, मैं उन्हें निकालने के लिए कैसे पसंद करता हूं, लेकिन लगता है कि एन्कोडिंग समस्याएं –
@Muhaye मैंने अपने उत्तर को अपडेट किया है जिसमें '* .strings' फ़ाइलों को एन्क्रिप्ट/डिक्रिप्ट करने के बारे में जानकारी शामिल है। – darvids0n