2012-05-03 91 views
0

在我的iOS4 +項目中,iam使用AES 128加密來加密一些大字符串,然後將其發送到php服務器。使用提供的AES128密鑰之一(隨機選擇)完成加密。當我加密數據時,我得到NSData。使用密鑰標識符對NSData進行iOS加密

我需要的是在文件開始發送到該服務器的開始添加一個2字節的某種類型的密鑰標識符,以便服務器將能夠識別我用於加密的密鑰。我怎麼能做到這一點(附加2字節nsdata)?作爲這個識別器,我到底能用什麼?

在先進的感謝! :)

回答

1

你顯然需要硬編碼或份額另一個請求字典什麼聯繫和標識的關鍵,但我會告訴你這樣做......

追加一些標識符,例如兩個數字

... 

    const Byte identifierBytes[2] = { 0xFF, 0xAA }; //two identifier bytes 

    NSMutableData *dataToSendToServer = [[NSMutableData alloc] initWithBytes:identifierBytes length:2]; 
    [dataToSendToServer appendData:encryptedDataToSendToServer]; 

    //send the dataToSendToServer to the server... 

    ... 

然後讀取的應用程序方面的標識符...

... 

    const Byte *identifierBytes = [[dataFromTheServer subdataWithRange:NSMakeRange(0, 2)] bytes]; 
    if (identifierBytes[0] == 0xFF && identifierBytes[1] == 0xAA) { 

     //the bytes are for the identifier {0xFF,0xAA} 
     NSData *encryptedDataFromServer = [dataFromTheServer subdataWithRange:NSMakeRange(2, dataFromTheServer.length - 2)]; 

    } 

    ... 

你可能想通過檢查其從內存中寫,但你應該能夠得到想法

0

如果您的密鑰索引不會更改,爲什麼不使用密鑰陣列中的密鑰索引作爲標識?

您可以添加字節是這樣的:

NSMutableData *mutableData = [yourNSData mutableCopy]; // make a mutable copy so you can append bytes. 
int aIndex = 0; // example index 
[mutableData appendBytes:aIndex length:sizeof(int)]; // append a 4byte int 32 

然後,您可以解壓在PHP中的int。

相關問題