2016-05-09 10 views
1

Hallo, ich benutze BBAES, um meinen Code zu verschlüsseln und zu entschlüsseln. Aber ich bekomme einen Fehler in dieser Zeile.AES muss unabhängig von der Schlüsselgröße eine feste IV-Größe von 16 Byte haben

encryptedData=[bb encryptedDataFromData:[bb dataFromString:_secret encoding:BBAESDataEncodingBase64] IV:[bb dataFromString:iv encoding:BBAESDataEncodingBase64] key:hashKeyData options:BBAESEncryptionOptionsIncludeIV]; 

Und mein Fehler ist

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'AES must have a fixed IV size of 16-bytes regardless key size.' 

Dies ist, wie ich meine hashKeyData

hashKeyData=[bb keyByHashingPassword:_key keySize:BBAESSaltDefaultLength]; 

Bitte helfen Sie mir erstellen. Dank

Antwort

0

Sie Ihre iv Zeichenfolge in iv Daten Umwandlung von

[bb dataFromString:iv encoding:BBAESDataEncodingBase64] 

Aufruf Dies gibt Ihnen mehr oder weniger als 16 Bytes, je nach iv, weshalb Sie die Ausnahme bekommen.

Die zu verwendende Funktion ist IVFromString:. Das verwendet einen MD5-Hash, um eine NSData-Instanz zu erstellen, die 16 Byte sein wird.

encryptedData=[bb encryptedDataFromData:[bb dataFromString:_secret encoding:BBAESDataEncodingBase64] IV:[bb IVString:iv] key:hashKeyData options:BBAESEncryptionOptionsIncludeIV]; 
+0

Hallo Danke für Ihre Antwort ,, Aber jetzt im einen Fehler wie diese bekommen *** Beenden app aufgrund nicht abgefangene Ausnahme ‚NSInvalidArgumentException‘, Grund: ‚- [BBAES IVFromString:]: Unbekannter Selektor zum Beispiel 0x1366c6da0 gesendet ' Warum das? – user1960169