0

以下は、データを暗号化しようとする私のコードです

暗号化方式を入力/呼び出します:

[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バイト]:

誰かがこれについて助け/アドバイスできますか?

4

3 に答える 3

2

あなたのメソッドはを期待NSDataし、あなたはsを渡しますNSString

于 2012-07-03T09:23:58.663 に答える
2

それ以外の

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

電話してみる

[self myED:[@"wcc123" dataUsingEncoding:NSUTF8StringEncoding] :[@"hahaha" dataUsingEncoding:NSUTF8StringEncoding] :[@"yyyy" dataUsingEncoding:NSUTF8StringEncoding]];
于 2012-07-03T09:26:57.643 に答える
0

@borrrden のコメントに続いて、メソッドにわかりやすい名前を付けます。例えば:

- (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];

さらに、メソッド内でNSStringto変換を実行し、文字列を受け入れるようにします。NSDataその方法の目標をよりよく理解できると思います。

それが役立つことを願っています。

于 2012-07-03T10:36:55.837 に答える