Я получаю Exe_Bad_Access (код = 1 адрес = 0X38) при интеграции платежного шлюза CCAvenue в IOS

#ios #objective-c #iphone #encryption #ccavenue

#iOS #objective-c #iPhone #шифрование #ccavenue

Вопрос:

Я выполнил следующие шаги для интеграции не-бесстыдного CCAvenue шлюза

Шаги:-

У меня есть мой идентификатор продавца и код доступа (URL, ip).

  1. Я вызываю свой сервер для получения параметров ключа 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-----
  
  1. Я шифрую количество и цену с помощью 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. Вы должны проверить это, я столкнулся с такой ошибкой.