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 ..
Vérifiez d'abord si vous avez des données ou non dans [NSMutableString stringWithString: [[NSData alloc] decryptAES: jsonMutableString]] –
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
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 –