我有一个加密函数,它接收数据和密钥以及内部 iv,并返回一个加密后的字符串。我可以加密只包含英文字符的每个字符串,但不能处理阿拉伯文。这是我的函数,请帮助我找出问题所在。谢谢
-(NSString*)Encrypt:(NSString*)data second:(NSString*)key { size_t outLength; NSMutableData * cipherData = [NSMutableData dataWithLength:data.length + kCCBlockSizeAES128]; Byte byte[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}; //这不是有效的值,主要的iv需要保密 NSData *datakey = [NSData dataWithBytes:key.UTF8String length:key.length]; NSData *datadata = [NSData dataWithBytes:data.UTF8String length:data.length]; CCCryptorStatus result = CCCrypt( kCCEncrypt , kCCAlgorithmAES128 , kCCOptionPKCS7Padding , datakey.bytes , [datakey length] , byte , datadata.bytes , [datadata length] , cipherData.mutableBytes , cipherData.length , &outLength);
if (result == kCCSuccess) {
cipherData.length = outLength;
}
else {
}
NSData *encryptedData=cipherData;
NSString *str=[encryptedData base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength];
return str;
}
utf8
不规则字节大小和数据缓冲区无效大小的问题。 - user28434'mstep