J'ai une application iPhone qui crypte un NSString en entrée en utilisant CCCrypt (AES256) et une clé en clair. La chaîne et la clé sont données à la méthode de chiffrement qui renvoie un objet NSData.NSData chiffré à NSString dans obj-c?
Demande [Description des données] où « données » sont les données de chaîne cryptée donne une NSString comme: « < 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a> » mais lorsque je tente de le convertir en un NSString, je reçois « (nul)".
J'ai besoin de renvoyer un NSString à l'utilisateur, qui peut être utilisé pour le décrypter à la chaîne d'origine en utilisant la même clé en clair. Si la propriété 'description' de l'objet NSData peut renvoyer une chaîne, est-il possible de produire un NSString à partir de l'objet NSData sans obtenir "(null)"? MISE À JOUR: Merci à Quinn, qui suggère d'utiliser l'encodage Base64 pour produire la chaîne embrouillée. D'après ce que je comprends, l'encodage Base64 ne permute pas simplement les caractères, mais l'échange de caractères dépend de la position, donc c'est bien. Ma seule préoccupation est que je veux être capable de crypter le message avec un mot de passe et que la phrase secrète identique soit entrée lorsque la chaîne embrouillée doit être décodée - quelqu'un peut-il suggérer des façons de l'implémenter?
J'ai mis à jour ma réponse pour répondre à cette question ci-dessous. Vous avez raison, Base64 n'est pas un algorithme de substitution - il étend essentiellement 3 octets à 4 octets, donc les données encodées sont 1,37 fois plus grandes que celles de son équivalent non-codé. Fondamentalement, il prend 3 morceaux de 8 bits et le redivise en 4 morceaux de 6 bits, puis les réinterprète chacun comme des morceaux de 8 bits, qui peuvent facilement être représentés en ASCII. Wikipedia a plus de détails. –