2012-07-30 40 views
7

में एक्सओआर फ़ाइल एन्क्रिप्शन मैं आईओएस के लिए एक ईपीब पाठक विकसित कर रहा हूं। सर्वर से डाउनलोड करने वाली ePub फ़ाइलें XOR एल्गोरिदम का उपयोग करके एन्क्रिप्ट की गई हैं। मैं उन फ़ाइलों को .xlsx प्रारूप के रूप में प्राप्त करने के लिए कुंजी के साथ प्राप्त कर रहा हूं। मैं फ़ाइल को पाठक को डिक्रिप्ट और लोड कर रहा हूं:आईओएस

  1. फ़ाइल को डाउनलोड निर्देशिका से एनएसडीटा के रूप में लोड करें।
  2. कुंजी के साथ डेटा डिक्रिप्ट करना।
  3. एक अस्थायी निर्देशिका में डिक्रिप्ट किए गए डेटा को लिखना।
  4. फ़ाइल को अस्थायी निर्देशिका से पाठक को लोड करें।

मैं फ़ाइल लोड करने के लिए AePubReader का उपयोग कर रहा हूं।

यहाँ decrypting कोड है:

- (NSData *)obfuscate:(NSData *)data withKey:(NSString *)key 
{ 
    NSMutableData *result = [data mutableCopy]; 


    // Get pointer to data to obfuscate 
    char *dataPtr = (char *) [result mutableBytes]; 

    // Get pointer to key data 
    char *keyData = (char *) [[key dataUsingEncoding:NSUTF8StringEncoding] bytes]; 

    // Points to each char in sequence in the key 
    char *keyPtr = keyData; 
    int keyIndex = 0; 

    // For each character in data, xor with current value in key 
    for (int x = 0; x < [data length]; x++) 
    { 
     // Replace current character in data with 
     // current character xor'd with current key value. 
     // Bump each pointer to the next character 
     *dataPtr = *dataPtr++^*keyPtr++; 

     // If at end of key data, reset count and 
     // set key pointer back to start of key value 
     if (++keyIndex == [key length]) 
      keyIndex = 0, keyPtr = keyData; 
    } 

    return result; 
} 

लेकिन जब मैं पाठक को decrypted फ़ाइल लोड करने की कोशिश कर रहा हूँ, मैं एक त्रुटि के रूप में निम्नानुसार हो रही है:

2012-07-30 20:45:12.652 XYX[5986:12203] ERROR: ePub not Valid 
2012-07-30 20:45:12.652 XYX[5986:12203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter' 
*** First throw call stack: 

मैं के लिए जाँच यूआरएल पथ, यह खाली नहीं है और यहां तक ​​कि अगर फ़ाइल पथ पर मौजूद है तो भी जांच की गई है। फ़ाइल निर्दिष्ट पथ पर मौजूद है।

जहां मैं गलत हो रहा हूं ??? किसी भी मदद की सराहना की जाएगी। अग्रिम में धन्यवाद।

+3

यह यूबी नहीं है: '* dataPtr = * dataPtr ++^* keyPtr ++;'? –

+0

@ पॉलर: क्षमा करें..मुझे यूबी द्वारा वास्तव में क्या सलाह नहीं मिली ... क्या आप कृपया थोड़ा और बता सकते हैं ?? – PETER

+0

अनुक्रम बिंदुओं के स्पष्टीकरण के लिए http://en.wikipedia.org/wiki/Sequence_point देखें और नियमों को तोड़ने पर अपरिभाषित व्यवहार के परिणामस्वरूप। –

उत्तर

8

मैंने इसे हल किया।

*dataPtr = *dataPtr^*keyPtr; 
     dataPtr++; 
     keyPtr++; 

धन्यवाद पॉल:

*dataPtr = *dataPtr++^*keyPtr++; 

मैं करने के लिए इसे बदल दिया है: के रूप में पॉल ने टिप्पणी की, समस्या के साथ था।