2017-07-04 1 views
1
+ (NSData *)doCipher:(NSData *)dataIn 
        iv:(NSData *)iv 
       key:(NSData *)symmetricKey 
      context:(CCOperation)encryptOrDecrypt // kCCEncrypt or kCCDecrypt 
       error:(NSError **)error 
{ 
    CCCryptorStatus ccStatus = kCCSuccess; 
    size_t   cryptBytes = 0; 
    NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128]; 

    ccStatus = CCCrypt(encryptOrDecrypt, 
         kCCAlgorithmAES128, 
         0, //kCCOptionPKCS7Padding, 
         symmetricKey.bytes, 
         kCCKeySizeAES128, 
         iv.bytes, 
         dataIn.bytes, 
         dataIn.length, 
         dataOut.mutableBytes, 
         dataOut.length, 
         &cryptBytes); 

    if (ccStatus == kCCSuccess) { 
     dataOut.length = cryptBytes; 
    } 
    else { 
     if (error) { 
      *error = [NSError errorWithDomain:@"kEncryptionError" 
             code:ccStatus 
            userInfo:nil]; 
     } 
     dataOut = nil; 
    } 

    return dataOut; 
} 

Ich habe DataIN als 154 Bytes von Daten, Schlüssel und Iv 16 Bytes von Daten, die, wenn ich die Verschlüsselung tue es -4303 Fehler gibt. (AES128 Mit CBC In IOS)AES 128 mit CBC In IOS

+0

Ausrichtungsfehler bedeutet, dass mit den Größen etwas nicht stimmt. Bitte überprüfen Sie meine Antwort für weitere Details: https://stackoverflow.com/questions/35921254/aes-ecb-ios-encrypt/48559334#48559334 – Joanne

Antwort

0

Fehlercode -4303 ist kCCAlignmentError. Aus der Dokumentation:

Beim Entschlüsseln, oder wenn sie mit einer Blockchiffre mit padding behinderte Verschlüsselung wird kCCAlignmentError wenn die Gesamtzahl der Bytes CCCryptUpdate vorgesehen zurückgegeben werden() kein ganzzahliges Vielfaches des aktuellen Algorithmus ist Block Größe.

Sie sollten überprüfen, ob Ihre Eingabedaten korrekt sind.

Verwandte Themen