Décryptage AES dans iOS: PKCS5 rembourrage et de la CBC

Je suis en œuvre pour iOS certains le code de décryptage d'un message d'origine sur un serveur sur lequel je n'ai aucun contrôle. Une précédente mise en œuvre sur une plate-forme de documents le déchiffrement des exigences AES256, spécifie la clé et le vecteur d'initialisation, et dit aussi:

 * Cipher Mode: CBC
 * Padding: PKCS5Padding

Les options pour la création d'un CCCryptor objet inclure uniquement kCCOptionPKCS7Padding et kCCOptionECBMode, notant que la SRC est la valeur par défaut. À partir de ce que je comprends au sujet de rembourrage pour le cryptage, je ne comprends pas comment on peut utiliser les deux; je pensais qu'ils étaient mutuellement exclusives. Dans la création d'un CCCryptor pour le déchiffrement, j'ai essayé d'utiliser à la fois un 0 pour les options et les kCCOptionPKCS7Padding, mais les deux me donner charabia après décryptage.

J'ai comparé le vidage de ce décryptage avec un dump de la décodé octets de la mémoire tampon sur l'autre plate-forme et confirmé qu'ils sont vraiment différents. Donc, il y a quelque chose que je suis en train de faire différentes dans cette mise en œuvre, qui est sensiblement différent, je ne sais pas quoi... Et n'ont pas la moindre idée de comment faire pour obtenir une poignée sur elle. Les plates-formes sont assez différentes qu'il est difficile de déduire beaucoup de la précédente mise en œuvre, car il est basé sur une plate-forme différente. Et bien sûr, l'auteur de la précédente mise en œuvre a depuis quitté.

Toute devine quoi d'autre pourrait être incompatible ou comment résoudre cette chose?

OriginalL'auteur Paul Mailman | 2011-02-09