簡體   English   中英

在iOS中達到AES128 / CBC / PKCS5

[英]Attain AES128/CBC/PKCS5 in iOS

我必須向具有以下加密要求AES128 / CBC / PKCS5Padding的安全服務器發出呼叫,但是iOS中可用的CCCrypt或CommonCrypto庫提供具有CBC模式的PKCS7Padding。

關於如何在服務器上實現這種加密的任何想法都是第三方,並且無法更改其實現。 我正在使用自定義IV。

請求代碼在這里。

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];

回應說:

<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>

您是否嘗試過查看是否有效? 在許多情況下,兩者可以互換而不會出現問題。 填充發生在最后,因此,如果您只是垃圾,則不是填充引起問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM