我认为这会生成随机的 64 字节 NSData。
uint8_t buffer[64];
SecRandomCopyBytes(kSecRandomDefault, 64, buffer);
NSData *keyData = [[NSData alloc] initWithBytes:buffer length:sizeof(buffer)];
我想像这样生成 64 字节的 NSData,但不是随机数据。 如何使用给定的键(如“com.this.is.akey”)生成 64 字节的 NSData。
试过这个,但它给了我错误的字节大小(不是 64 字节)。
NSString *base64EncodedString = [[@"somekey.here" dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0];
NSData *encodedData = [[NSData alloc] initWithBase64EncodedString:base64EncodedString
options:0];
您可以使用 -[NSString dataUsingEncoding:]
将 NSString
转换为 NSData
。
NSString *key = @"com.this.is.akey";
NSData *keyData = [key dataUsingEncoding:NSASCIIStringEncoding];
如果数据长度小于或大于 64 字节,则应填充或截断数据以精确到 64 字节。
if (keyData.length != 64) {
NSMutableData *mutableData = keyData.mutableCopy;
mutableData.length = 64;
keyData = mutableData.copy;
}
然后,您可以将 NSData
对象传递给 RLMRealmConfiguration.encryptionKey
。
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.encryptionKey = keyData;
NSError *error = nil;
RLMRealm *realm = [RLMRealm realmWithConfiguration:config error:&error];
关于ios - 从 key 字符串生成 64 字节长的 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34854250/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |