当我在IOS

时间:2016-10-24 09:39:43

标签: ios objective-c iphone encryption ccavenue

我按照以下步骤整合了非无耻的CCAvenue GateWay

步骤: -

我有我的商家ID和访问代码(url,ip)。

  1. 我正在调用我的服务器获取RSA密钥参数(access_code,order_id)
  2. //我的服务器已在CCAvenue Server中注册 2.my服务器调用Avenue获取RSA密钥

    3.my服务器转发RSA密钥

    4.once我得到了删除额外的行“\ 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];
      
    2. 因为我在

      中获得 Exe_Bad_Acess
        

      RSA * rsa = PEM_read_bio_RSA_PUBKEY(bufio,NULL,NULL,NULL);

      rsa收到错误。

      enter image description here

      如何解决这个问题。请帮帮我。!!

3 个答案:

答案 0 :(得分:3)

非常感谢你的支持,我终于解决了我的问题。

一旦你从你的服务器获得rsa密钥,你需要删除新的行" \ n",斜杠" \"和双引号" \""

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

这里我们需要将其转换为ba64encryption格式的输入。

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

你需要将我们的字符串完全相同,   1." string"的每一行必须是64个字符宽。   2.必须以换行符终止

我正在更新我的Code.For Me它的工作正常。

        NSLog(@"%@",rsaKey);

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

        // 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. :) 

// rsaKey = [rsaKey stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; // NSLog(@&#34;%@&#34;,rsaKey);

for message in prog_messages:
    if message.name == rojer:
         rojer_messages.append(message)
        if message.attachments:
            link = str(message).split("'")
            rojer_pics.append(link[1])
            links.write(str(link[1]) + '\n')

答案 1 :(得分:0)

这必须是您从服务器获取的返回密钥的问题。似乎这里没有正确配置服务器。我们遇到了同样的问题。只需将此错误报告发送到此电子邮件:service@ccavenue.com

其CCAvenue技术支持电子邮件。您可以询问他们的联系电话号码以获得技术支持,并且可以快速解决您在整合时可能遇到的任何技术问题。

答案 2 :(得分:0)

根据错误信息可以看出发生了内存泄漏。

我遇到过类似的错误。

你可以尝试我的方法。

Xcode - &gt;编辑方案 - &gt;运行 - &gt;诊断 - &gt;选择地址清理程序

运行您的项目。