在我的 iOS4+ 项目中,iam 使用 AES 128 加密来加密一些大字符串,然后将其发送到 php 服务器。使用提供的 AES128 密钥之一(随机选择)进行加密。当我加密数据时,我得到 NSData。
我需要的是在我发送到该服务器的文件的开头添加一个 2 字节的某种密钥标识符,以便服务器能够识别我用于加密的密钥。我该怎么做(将 2 个字节附加到 nsdata)?我到底可以用什么作为这个标识符?
感谢先进!:)
在我的 iOS4+ 项目中,iam 使用 AES 128 加密来加密一些大字符串,然后将其发送到 php 服务器。使用提供的 AES128 密钥之一(随机选择)进行加密。当我加密数据时,我得到 NSData。
我需要的是在我发送到该服务器的文件的开头添加一个 2 字节的某种密钥标识符,以便服务器能够识别我用于加密的密钥。我该怎么做(将 2 个字节附加到 nsdata)?我到底可以用什么作为这个标识符?
感谢先进!:)
你显然需要硬编码或在另一个请求中共享字典什么链接和标识符到一个键,但我会让你这样做......
附加一些标识符,例如两个数字
...
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)];
}
...
您可能想检查它,因为它是从内存中写入的,但您应该能够理解
如果您的键索引不会更改,为什么不使用键数组中的键索引作为标识?
您可以像这样添加字节:
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。