#ios #objective-c #iphone #encryption #ccavenue
#iOS #objective-c #iPhone #шифрование #ccavenue
Вопрос:
Я выполнил следующие шаги для интеграции не-бесстыдного CCAvenue
шлюза
Шаги:-
У меня есть мой идентификатор продавца и код доступа (URL, ip).
- Я вызываю свой сервер для получения параметров ключа RSA (access_code, order_id)
// мой сервер уже зарегистрирован на сервере CCAvenue 2.my сервер, вызывающий канал для ключа RSA
3.my сервер пересылает ключ RSA
4. как только я получил, я удаляю лишние строки » n», двойные кавычки «»—«» и «»
// removing double quates
NSString * newReplacedString2 = [rsaKey stringByReplacingOccurrencesOfString:@""" withString:@""];
//removing /n in the key
NSString * newReplacedString = [newReplacedString2 stringByReplacingOccurrencesOfString:@"\n" withString:@""];
//removing / in the key
NSString * newReplacedString1 = [newReplacedString stringByReplacingOccurrencesOfString:@"\" withString:@""];
5. и я помещаю этот ключ между
rsaKey = [NSString stringWithFormat:@"-----BEGIN PUBLIC KEY-----n%@n-----END PUBLIC KEY-----n",newReplacedString1];
//*******//***//****//**// output //*******//***//****//**//
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuV7OdmPSutrlOE9lF3YdW4ymGn qselCOycMk95Tobw1PcqCeAWkrnxUECpAdnHGrUKmFbEDHs3wnwzLTbfa3GvE5dvvmluug78X3RYEFQiMh1QpfS5fBfvs4WQKw7oigko3G0UwZLZFnZ4E4WKTQi4wbCgjwQJFMnMGJfFYNcoSJluVg/q8z3bVxfDOV0ZPWccmvA3bTf9YFHKCC3clscQrGf1NPnBGcBGm s06t3EljoSmpjtyTgSiGrqBZ8TSCQxoyXxS RkhNTigg6mqW9hIisxYYqlbzvRnCDhuqgZfmP7t65QG5raELVE7d Ia dgh024luZ9 vSk4Qb65DQIDAQAB -----END PUBLIC KEY-----
-
Я шифрую количество и цену с помощью CCTool
NSString *myRequestString = [NSString stringWithFormat:@"amount=%@amp;currency=%@",amount,currency];(2,INR) CCTool *ccTool = [[CCTool alloc] init]; NSString *encVal = [ccTool encryptRSA:myRequestString key:rsaKey];
при этом я получаю Exe_Bad_Acess в
RSA * rsa = PEM_read_bio_RSA_PUBKEY (буфер обмена, НУЛЬ, НУЛЬ, НУЛЬ);
эта ошибка rsa при получении.
как решить эту проблему.Пожалуйста, помогите мне, ребята.!!
Ответ №1:
привет, спасибо вам за всю поддержку, я, наконец, решил свою проблему.
как только вы получите ключ rsa с вашего сервера, вам нужно удалить новые строки » n», косые черты «» и двойные кавычки «»»
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuV7OdmPSutrlOE9lF3YdW4ymGn qselCOycMk95Tobw1PcqCeAWkrnxUECpAdnHGrUKmFbEDHs3wnwzLTbfa3GvE5dvvmluug78X3RYEFQiMh1QpfS5fBfvs4WQKw7oigko3G0UwZLZFnZ4E4WKTQi4wbCgjwQJFMnMGJfFYNcoSJluVg/q8z3bVxfDOV0ZPWccmvA3bTf9YFHKCC3clscQrGf1NPnBGcBGm s06t3EljoSmpjtyTgSiGrqBZ8TSCQxoyXxS RkhNTigg6mqW9hIisxYYqlbzvRnCDhuqgZfmP7t65QG5raELVE7d Ia dgh024luZ9 vSk4Qb65DQIDAQAB
Здесь нам нужно преобразовать его во входные данные для формата шифрования ba64.
https://gist.github.com/superwills/5415344#file-openssl-rsa-encryption-sample-L154
вам нужно преобразовать нашу строку точно так же, 1. Каждая строка «string» должна иметь ширину 64 символа. 2.it должно завершаться новой строкой
Я обновляю свой код.Для меня это работает нормально.
NSString *rsaKey = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
// NSString *RSAKey = [[NSString alloc] Инициализация с данными: кодирование данных: NSASCIIStringEncoding];
NSLog(@"%@",rsaKey);
// RSAKey = [RSAKey stringByTrimmingCharactersInSet:[nscaracterset newlineCharacterSet]];
// NSLog(@»% @», RSAKey);
// removing double quates
NSString * newReplacedString2 = [rsaKey stringByReplacingOccurrencesOfString:@""" withString:@""];
NSLog(@"%@",rsaKey);
//removing n in the key
NSString * newReplacedString = [newReplacedString2 stringByReplacingOccurrencesOfString:@"\n" withString:@""];
NSLog(@"%@",rsaKey);
//removing in the key
NSString * newReplacedString1 = [newReplacedString stringByReplacingOccurrencesOfString:@"\" withString:@""];
NSLog(@"%@",newReplacedString1);
NSString * abc = [NSString stringWithFormat:@"%@", newReplacedString1];
NSMutableString *sss=[NSMutableString new];
int j=(int)([abc length]/63);
for (int i=0; i<=j; i ) {
int k= i*63;
NSString * newString;
if (i != j) {
newString = [abc substringWithRange:NSMakeRange(k,63)];
NSLog(@"%lu",(unsigned long)newString.length);
newString=[NSString stringWithFormat:@"%@",newString];
}else{
newString = [abc substringWithRange:NSMakeRange(k,[abc length]-k)];
NSLog(@"%lu",(unsigned long)newString.length);
if (newString.length !=0)
newString=[NSString stringWithFormat:@"%@",newString];
}
if (newString.length !=0)
[sss appendString:[NSString stringWithFormat:@"%@n",newString]];
}
NSLog(@"%@",sss);
rsaKey = [NSString stringWithFormat:@"-----BEGIN PUBLIC KEY-----n%@-----END PUBLIC KEY-----n",sss];
NSLog(@"%@",rsaKey);
//Encrypting Card Details
NSString *myRequestString = [NSString stringWithFormat:@"amount=%@amp;currency=%@",amount,currency];
CCTool *ccTool = [[CCTool alloc] init];
NSLog(@"emcrpted data skfjsf jakdfhjklfhjk%@",[ccTool encryptRSA:myRequestString key:rsaKey]);
Happy Coding. :)
Ответ №2:
Должно быть, это проблема с ключом возврата, который вы получаете с сервера. Кажется, что сервер здесь настроен неправильно. У нас была та же проблема. Просто отправьте это сообщение об ошибке на это электронное письмо: service@ccavenue.com
Это электронное письмо технической поддержки CCAvenue. Вы можете запросить их контактный номер для технической поддержки, и они быстро ответят на любой технический вопрос, который может возникнуть у вас во время интеграции.
Комментарии:
1. Gokilani привет, я уже отправил свой report/Users/hmw-pc1/Downloads/IOS_RSAFormat.txt
2. Привет, я уже отправил им отчет, они улучшают этот формат gist.githubusercontent.com/naveen527 /…
3. я сделал то же самое, но получаю ту же проблему: ( @Bhumi Goklani
4. если я перешлю свой код, вы можете это проверить… пожалуйста, я перепробовал все методы, но я не получил результата.
5. ОК. Пожалуйста, пришлите мне ссылку на dropbox. Я могу попробовать.
Ответ №3:
Согласно сообщению об ошибке, видно, что произошла утечка памяти.
Я сталкивался с подобными ошибками.
Вы можете попробовать мой метод.
Xcode -> Редактировать схему -> Выполнить -> Диагностика -> выбрать средство очистки адреса
Запустите свой проект.
Комментарии:
1. Нет @Huber J никаких изменений в выводе: (
2. Потребовалось слишком много места в памяти, время освобождения не было выпущено полностью.
3. Вы должны проверить это, я столкнулся с такой ошибкой.