шифрование iphone не работает - PullRequest
3 голосов
/ 15 мая 2010

У меня реализовано шифрование / дешифрование, и оно выполняется без ошибок, но я не могу расшифровать данные и не уверен, зашифрованы ли эти данные, пожалуйста, помогите.

- (NSData *)AES256EncryptWithKey:(NSString *)key {

char keyPtr[kCCKeySizeAES256+1]; 
bzero(keyPtr, sizeof(keyPtr));


[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];


NSUInteger dataLength = [strData length];
data = [[NSData alloc] init];
data = [strData dataUsingEncoding:NSUTF8StringEncoding];


size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *pribuffer = malloc(bufferSize);

size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                      keyPtr, kCCKeySizeAES256,
                                      NULL /* initialization vector (optional) */,
                                      [data bytes], dataLength, /* input */
                                      [data bytes], bufferSize, /* output */
                                      &numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
    return [NSData dataWithBytesNoCopy:data length:numBytesEncrypted];
}}

Расшифровка:

-(NSData *)AES256DecryptWithKey:(NSString *)key andForData:(NSData *)objDataObject {
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr)); 
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

NSUInteger dataLength = [objDataObject length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);

size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                      keyPtr, kCCKeySizeAES256,
                                      NULL,
                                      [objDataObject bytes], dataLength,
                                      [objDataObject bytes], bufferSize,
                                      &numBytesDecrypted);

if (cryptStatus == kCCSuccess) {
    return [NSData dataWithBytesNoCopy:objDataObject length:numBytesDecrypted];
}

}

я называю вышеупомянутые методы следующим образом:

CryptoClass *obj = [CryptoClass new];
NSData *objData = [obj AES256EncryptWithKey:@"hell"];

NSData *val = [obj AES256DecryptWithKey:@"hell" andForData:objData ];

NSLog(@"decrypted string is : %@ AND LENGTH IS %d",[val description],[val length]);

Похоже, что дешифрование вообще не происходит, а шифрование - я в этом не уверен, пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 19 мая 2010

Я выучил это сам,

полная реализация, которая может обойти ccats:

http://pastie.org/966473

Спасибо всем, кто помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...