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
Antwort
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.
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
Ja, es gibt. –
** 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. –