2016-07-21 2 views
0

Je chaîne cryptée depuis le serveur comme ceci:résultat nul lorsque converti NSString à NSDictionary

4gtFiu1DVK2MKGHcFtbuR4spdrhAixptPH0wz2n2VlawBWKlDE/I9m1K4GsBdBH8MJuzhiVHvQy0PYvvcCWuQv6dE1OHzflW3mN3jbEVLrodXvZVnafyo8Lmn6i2x4gGh3XB+ij59FvOOklM+D3E5mhwIFO0cZxGE0eAx2Gn9tj1euoMIChLhnD/FtvuKoucQBCKTTBfihu7dVdZ+gLxqsmusZqUeHnIYYrg3kpH2gu0wQ2GiKm/UMoogYR0JRoYac5ui/aVeDWS14bLoqAc4vJVWVt+vJhJG+a8rC5B68raUDaxhhCJM0b6lpOqAJ/5iVZKLufYMLv2FMNoc5LFkP5QNAYneYCkhfWfNzcDgYC0biYQsT1uIfSgN2q86Qdghe9OBMBFfisfaEsg8+qI7JxhNh+eA6tU5W/yJTIckhvk=

Ceci est mon code pour décrypter cette chaîne cryptée:

- (NSString *)decryptAES:(NSString *)text { 
NSDictionary *keyDict = [self chooseKey:text]; 
NSString *key = [keyDict objectForKey:@"key"]; 
NSData *keyHash = [[key dataUsingEncoding:NSUTF8StringEncoding] SHA256Hash]; 

NSString *newText = [text stringByReplacingCharactersInRange:NSMakeRange(1, 1) withString:@""]; 
NSData *encryptData = [NSData base64DataFromString:newText]; 
NSData *plainData = [encryptData AES256Decrypt:keyHash]; 
NSString *plain = [[NSString alloc] initWithData:plainData encoding:NSUTF8StringEncoding]; 

return plain; 
} 

j'ai déchiffré avec succès cette chaîne cryptée dans NSString et le résultat est:

{ 
    "promo": [{ 
     "status": 1, 
     "link": "https://www.s6pay.com/asset_template/img/promo/sspquizpromo.jpg", 
     "description": "SSP mengadakan quiz yang berhadiah tiket kereta api dengan menjawab kuis.", 
     "promoMessage": "Success", 
     "promoTitle": "SSP Promo Quiz! Bagi-bagi Tiket Kereta Api" 
    }], 
    "count": 1 
} 

Je veux convertir ce st décrypter anneau dans NSDictionary/JSON, mon code comme ceci:

NSMutableString *plainTemp = [NSMutableString stringWithString:[[NSData alloc] decryptAES:jsonMutableString]] 
NSLog(@"Decrypt %@",plainTemp); 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[plainTemp dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; 
NSLog(@"JSON %@",json); 

Je suis en train de changer les options avec NSJSONReadingMutableLeaves, NSJSONReadingAllowFragments ou NSJSONReadingMutableContainers mais encore donner résultat JSON (null).

J'essaie de vérifier cette chaîne décryptée en utilisant http://json.parser.online.fr (résultat de la chaîne cryptée) et ce résultat est valide JSON.

Quel est le problème avec mon code? Pouvez-vous m'aider s'il vous plaît? Merci ..

+0

Vérifiez d'abord si vous avez des données ou non dans [NSMutableString stringWithString: [[NSData alloc] decryptAES: jsonMutableString]] –

+0

J'ai vérifié que NSMutableString * plainTemp utilise NSLog et ce résultat est: {"promo": [{" statut ": 1," lien ":" https://www.s6pay.com/asset_template/img/promo/sspquizpromo.jpg "," description ":" SSP mengadakan quiz yang berhadiah tiket kereta api dengan menjawab kuis. ", "promoMessage": "Succès", "promoTitle": "Sizz Promo Quiz! Bagi-bagi Tiket Kereta Api"}], "count": 1} – gregkyt

+0

Ohh désolé, j'ai collé une mauvaise ligne dans le commentaire précédent. Veuillez vérifier les données dans [plainTemp dataUsingEncoding: NSUTF8StringEncoding]. Êtes-vous en mesure d'obtenir des données ou non. Si vous obtenez des données, créez un objet de NSError (dites erreur) et passez la référence dans [NSJSONSerialization JSONObjectWithData: [plainTemp dataUsingEncoding: NSUTF8StringEncoding] options: 0 erreur: & erreur]; NSLog ("Erreur est:% @", error.localizationString); Dans la plupart des cas, nous devons modifier le format Encode –

Répondre

0

I have successfully decrypted that encrypted string into NSString and the result is:

Est-ce que c'est vrai NSString objet? Pourquoi c'est si bien formaté? S'il est vrai NSString, vous ne devriez pas avoir des problèmes avec la conversion, il suffit d'utiliser:

NSError *jsonError; 
NSData *objectData = [sourceString dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError]; 

Sinon, vous devriez poster plus de détails comment vous décryptez votre chaîne.

+0

Je vais vous donner le code complet pour déchiffrer cette chaîne cryptée mais cette colonne de commentaire ne suffit pas alors je vais éditer ma question – gregkyt

+1

Ceci est un commentaire, pas une réponse. – Droppy

+0

Ceci est une réponse, pas un commentaire –

0

Bonjour à tous j'ai pour obtenir la réponse à ma question, j'utilise ce

NSString* string = [[[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] stringByReplacingOccurrencesOfString:@"\t" withString:@""] stringByReplacingOccurrencesOfString:@"\0" withString:@""]; 
data = [string dataUsingEncoding:NSUTF8StringEncoding]; 

de https://stackoverflow.com/a/23321435/5742519 pour obtenir réponse à ma question. Merci beaucoup pour vous qui répondez à ma question.