Я использую категорию NSData + AESCrypt Джима Дови и NSString + AESCrypt Майкла Седлачека (2011-02-22).
А на PHP у меня есть простой скрипт:
<?php
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = '01234567890123456789012345678901';
$plaintext = "myworda";
$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB);
$base64encoded_ciphertext = base64_encode($ciphertext);
echo "ciphertext: ".$base64encoded_ciphertext."<br/>";
?>
В ObjC:
NSString *key = @"01234567890123456789012345678901";
NSString *plaintext = [@"+l56Ia4yyK19D2x2+oCXuw==" AES256DecryptWithKey: key];
NSLog(@"plaintext: %@", plaintext);
Я изменяю переменную $ plaintext в PHP, запускаю скрипт, копирую и вставляю выходной шифр в Objective-c, чтобы расшифровать его.
И:
«myword» дает мне «+ l56Ia4yyK19D2x2 + oCXuw ==», и я расшифровываю и получаю «myword» на iOS [OK]
«Доброе утро» дает мне «5UdImsV1pQs60ovXmH74HQ ==», и я дешифрую и получаю «Доброе утро» на iOS [OK]
- «Шредер» дает мне «KqNSCE8nGsYUYVdGZ2tnMw ==» и я расшифруюи получить «Шредер» на iOS [OK]
- «Шредер» дает мне «KqNSCE8nGsYUYVdGZ2tnMw ==», а я расшифровываю и получаю «Шредер» на iOS [OK]
- »очень долготекст "дает мне" lsa + QF3IHQnAFiOjl2Heyg == "и я расшифровываю и получаю" очень длинный текст "на iOS [OK]
- " очень, очень, очень, очень длинный текст "дает мне" kl / ThEyuyUMmKSqU4 / fJSzzJOyvsXrGRt5 / zsnqjQww = ", и я не могу расшифровать его на iOS [FAIL]
Почему отказывает # 5?Если я пытаюсь зашифровать «очень, очень, очень, очень длинный текст» с помощью XCode, я получаю «kl / ThEyuyUMmKSqU4 / fJS90UZoJ73S4gox2uCoWoIL8 =», заметив, что*
Но в дальнейшем, шифрование «доброе утро» на Xcode дает мне «hVq1AuR8PAXSOztK26pmMw ==», в то время как PHP выдает «5UdImsV1pQs60ovXmH74HQ ==», но Xcode расшифровывает оба «доброе утро» с помощью одного и того же ключа.
Пожалуйста, помогите.