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

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

Шаги: –

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

  1. Я звоню на свой сервер для получения параметров ключа RSA (access_code, order_id)

// мой сервер уже зарегистрирован в CCAvenue Server 2. мой сервер вызывает ключ Avenue for RSA

3.мой ​​сервер пересылает ключ 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=%@&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(bufio, NULL, NULL, NULL);

что rsa получает ошибку.

введите здесь описание изображения

как решить эту проблему. Пожалуйста, помогите мне, ребята.!!


person Community    schedule 24.10.2016    source источник


Ответы (3)


Привет, спасибо за всю поддержку, я наконец решил свою проблему.

как только вы получите ключ rsa с вашего сервера, вам нужно удалить новые строки "\n", косые черты "\" и двойные кавычки "\""

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuV7OdmPSutrlOE9lF3YdW4ymGn+qselCOycMk95Tobw1PcqCeAWkrnxUECpAdnHGrUKmFbEDHs3wnwzLTbfa3GvE5dvvmluug78X3RYEFQiMh1QpfS5fBfvs4WQKw7oigko3G0UwZLZFnZ4E4WKTQi4wbCgjwQJFMnMGJfFYNcoSJluVg/q8z3bVxfDOV0ZPWccmvA3bTf9YFHKCC3clscQrGf1NPnBGcBGm+s06t3EljoSmpjtyTgSiGrqBZ8TSCQxoyXxS+RkhNTigg6mqW9hIisxYYqlbzvRnCDhuqgZfmP7t65QG5raELVE7d+Ia+dgh024luZ9+vSk4Qb65DQIDAQAB

Здесь нам нужно преобразовать его во входные данные для формата ba64encryption.

https://gist.github.com/superwills/5415344#file-openssl-rsa-encryption-sample-L154

Вам нужно преобразовать нашу строку точно так же, 1. Каждая строка «строки» должна иметь ширину 64 символа. 2. он должен заканчиваться новой строкой

Я обновляю свой код. Для меня он работает нормально.

  NSString *rsaKey = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

// NSString *rsaKey = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

        NSLog(@"%@",rsaKey);

// rsaKey = [rsaKey stringByTrimmingCharactersInSet:[NSCharacterSet 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=%@&currency=%@",amount,currency];
            CCTool *ccTool = [[CCTool alloc] init];


        NSLog(@"emcrpted data  skfjsf jakdfhjklfhjk%@",[ccTool encryptRSA:myRequestString key:rsaKey]);






            Happy Coding. :) 
person Community    schedule 27.10.2016

Это должно быть проблемой с ключом возврата, который вы получаете с сервера. Похоже, что сервер здесь настроен неправильно. У нас была такая же проблема. Просто отправьте этот отчет об ошибке на этот адрес электронной почты: [email protected]

Электронная почта службы технической поддержки CCAvenue. Вы можете попросить их контактный номер для технической поддержки, и это будет быстро для любого технического вопроса, который может возникнуть во время интеграции.

person Bhumi Goklani    schedule 25.10.2016
comment
Gokilani привет, я уже отправил свой отчет/Users/hmw-pc1/Downloads/IOS_RSAFormat.txt - person ; 25.10.2016
comment
Привет, я уже отправил им отчет, который они упомянули в этом формате .com/naveen527/ - person ; 25.10.2016
comment
я сделал то же самое, но возникла та же проблема :( @Bhumi Goklani - person ; 25.10.2016
comment
bhumi, я отправлю свой код, можете ли вы его проверить ... пожалуйста, я перепробовал все методы, но не получил результата. - person ; 25.10.2016
comment
В порядке. Пожалуйста, пришлите мне ссылку на дропбокс. Я могу попробовать. - person Bhumi Goklani; 26.10.2016
comment
TQ, я получил решение для моей проблемы. @Бхуми - person ; 27.10.2016

По сообщению об ошибке видно, что произошла утечка памяти.

Я встречал подобные ошибки.

Можете попробовать мой метод.

Xcode -> Edit Scheme -> Run -> Diagnostics -> выберите Address Sanitizer

Запустите свой проект.

person HuberJ    schedule 25.10.2016
comment
Нет @Huber J без изменений в выводе :( - person ; 25.10.2016
comment
Применить слишком много места в памяти, освобождение времени не освобождается полностью. - person HuberJ; 25.10.2016
comment
Вы должны проверить это, я столкнулся с такой ошибкой. - person HuberJ; 25.10.2016