2016-09-02 2 views
0

Gibt es eine Methode zum Entschlüsseln/Entschlüsseln einer Zeichenfolge in iOS nach diesem Algorithmus? alles, was ich weiß, dass in Java diese Klasse: javax.crypto.Cipher wird für diesen Zweck verwendetVerschlüsselungsentschlüsselung AES/ECB/NoPadding

+0

Ja, es gibt. –

+1

** Verwenden Sie niemals den [ECB-Modus] (http://crypto.stackexchange.com/q/14487/13022) **. Es ist deterministisch und daher nicht semantisch sicher. Sie sollten zumindest einen randomisierten Modus wie [CBC] (http://crypto.stackexchange.com/q/22260/13022) oder [CTR] verwenden (http://crypto.stackexchange.com/a/2378/ 13022). Es ist besser, Ihre Chiffriertexte zu authentifizieren, so dass Angriffe wie ein [padding oracle attack] (http://crypto.stackexchange.com/q/18185/13022) nicht möglich sind. Dies kann mit authentifizierten Modi wie GCM oder EAX oder mit einem [encrypt-then-MAC] (http://crypto.stackexchange.com/q/202/13022) Schema erfolgen. –

Antwort

0

Apple Common Crypto unterstützt AES, ECB-Modus (CBC-Modus verwenden) und keine Auffüllung. Wenn Sie keine Auffüllung verwenden, muss die Eingabedatenlänge ein genaues Vielfaches der AES-Blockgröße (16 Byte) sein. Die Standardauffüllung ist PKCS#7 (geb. PKCS # 5).

Sie wären besser dran mit einer Lösung, die sichere Verschlüsselung unterstützt, wie RNCryptor, die mehrere Sprachen und Plattformen unterstützt.

Die Verwendung der Verschlüsselung bietet keine Sicherheit, sie muss in Verbindung mit anderen kryptografischen Primitiven korrekt verwendet werden.

0

Apples Common Crpto unterstützt es. Importieren Sie CommonCryptor.h und CCCryptorStatus "CCCrypt" ist was Sie brauchen.

Hier ist ein Beispiel:

+ (NSData *)encryptDataWithAESECB:(NSData *)data 
           key:(NSData *) key 
          error:(NSError **)error { 
    size_t outLength; 

    int cipherLen = (int)(data.length/kAlgorithmBlockSize + 1)*kAlgorithmBlockSize; 
    NSMutableData *cipherData = [NSMutableData dataWithLength:cipherLen]; 
    NSData *newData = [self addPaddingBeforeEncryptWithAESECB:data]; 

    CCCryptorStatus result = CCCrypt(kCCEncrypt, // operation 
            kAlgorithm, // Algorithm 
            kCCOptionECBMode, // Mode 
            key.bytes, // key 
            key.length, // keylength 
            0,// iv 
            newData.bytes, // dataIn 
            newData.length, // dataInLength, 
            cipherData.mutableBytes, // dataOut 
            cipherData.length, // dataOutAvailable 
            &outLength); // dataOutMoved 
    if (result == kCCSuccess) { 
     cipherData.length = outLength; 
    }else { 
     if (error) { 
      *error = [NSError errorWithDomain:kRNCryptManagerErrorDomain code:result userInfo:nil]; 
     } 
     return nil; 
    } 
    return cipherData; 
} 

Bitte lesen Sie meinen Beitrag hier für weitere Informationen: AES ECB iOS Encrypt