2012-07-03 49 views
0

下面是我的代碼,嘗試對數據進行加密的iOS無法識別的選擇發送到實例0x45e8

輸入/調用我的加密方法:

[self myED:@"wcc123" :@"hahaha" :@"yyyy"]; 

- (NSData*) myED:(NSData*)data :(NSData*) key :(NSData*)iv{ 

    @try { 
     // Try something 
     NSLog(@"Original String: %@", data); 


     size_t bufferSize = [data length]*2; 
     void *buffer = malloc(bufferSize); 
     size_t encryptedSize = 0;  
     CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,           
               [key bytes], [key length], [iv bytes], [data bytes], [data length],           
               buffer, bufferSize, &encryptedSize); 
    } 
    @catch (NSException * e) { 
     NSLog(@"Exception: %@", e); 
    } 
    @finally { 
     // Added to show finally works as well 
    } 


    return nil; 

} 

然而,當嘗試運行這段代碼,它提示我例外下面

2012-07-03 16:52:44.776 wccTest [930:F803]例外: - [__ NSCFConstantString字節]:

任何人都可以幫助/建議嗎?

回答

2

您的方法預計爲NSData,並且您正在通過NSString s。取而代之的

[self myED:@"wcc123" :@"hahaha" :@"yyyy"]; 

2

嘗試調用

[self myED:[@"wcc123" dataUsingEncoding:NSUTF8StringEncoding] :[@"hahaha" dataUsingEncoding:NSUTF8StringEncoding] :[@"yyyy" dataUsingEncoding:NSUTF8StringEncoding]]; 
+0

如果您不希望任何與您一起工作的開發人員對您尖叫,請給您的參數提供姓名。 – borrrden

+0

同意@borrrden – Stavash

0

繼@borrrden評論我也將得到自explicative名字你的方法。例如:

- (NSData*)encryptEDData:(NSData*)data withKey:(NSData*)key initVector:(NSData*)iv { 
    // same as before 
} 

所以,selector此方法將是encryptEDData:withKey:initVector:

您可以調用該方法,如:

NSData* edData = //... 
NSData* keyData = //... 
NSData* ivData = //... 
[self encryptEDData:edData withKey:keyData initVector:ivData]; 

此外,我的方法中進行NSStringNSData轉換離開它接受的字符串。我認爲它可以更好地理解該方法的目標。

希望有所幫助。

相關問題