首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS中实现iOS 128/CBC/PKCS5 5

在iOS中实现iOS 128/CBC/PKCS5 5
EN

Stack Overflow用户
提问于 2015-02-10 11:35:51
回答 1查看 972关注 0票数 0

我必须调用具有以下加密要求的安全服务器AES128/CBC/PKCS5Padding,,但是在iOS中可用的CCCrypt或CommonCrypto库为PKCS7Padding提供CBC模式。

任何知道我如何能够实现这种加密作为服务器是第三方,它的实现是不能改变的。我用的是定制的IV。

请求代码在这里。

代码语言:javascript
复制
NSString* exampleXML = @"<my xml file contents>"
const char myByteArray1[] = {
    0x12,0x13,0x14,0x15,
    0x16,0x17,0x18,0x19,
    0x12,0x13,0x14,0x15,
    0x16,0x17,0x18,0x19 };

NSData *iv = [NSData dataWithBytes:myByteArray length:sizeof(myByteArray)];

NSString* headPadding=@"GH12RT25Y2";
int* status=nil;

NSString* encryptionKey=@"FTH25GFD658ERT21YHU21==2";
NSString* base64encodedPass=[[encryptionKey dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0]; // Base64 Encode

// Using NSData+CommonCrypto.h
NSData * encrypted = [[exampleXml dataUsingEncoding:NSUTF8StringEncoding] dataEncryptedUsingAlgorithm:kCCAlgorithmAES128 key:base64encodedPass initializationVector:iv options:kCCOptionPKCS7Padding error:status];

NSMutableData *headData =[NSMutableData dataWithData:[headPadding dataUsingEncoding:NSUTF8StringEncoding]];
[headData appendData:encrypted]; 


NSURL *sRequestURL = [NSURL URLWithString:@"myurl.com"];

NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:sRequestURL];
NSString *sMessageLength = [NSString stringWithFormat:@"%lu", (unsigned long)[headData length]];

[myRequest addValue: @"text/xml;  charset=utf-8" forHTTPHeaderField:@"Content-Type"];
// [myRequest addValue: @"text/xml" forHTTPHeaderField:@"Content-Type"];

[myRequest addValue: sMessageLength forHTTPHeaderField:@"Content-Length"];
[myRequest setHTTPMethod:@"POST"];
[myRequest setHTTPBody:headData];

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:myRequest delegate:self];
[theConnection start];

答复说:

代码语言:javascript
复制
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Couldn't parse stream.</faultstring></soap:Fault></soap:Body></soap:Envelope>
EN

回答 1

Stack Overflow用户

发布于 2015-02-10 11:39:58

你试过看它是否有效吗?在许多情况下,这两种情况可以在没有问题的情况下交换。填充发生在最后,所以如果您只得到垃圾,而不是填充引起问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28430676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档