• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 从 key 字符串生成 64 字节长的 NSData

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:08:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我认为这会生成随机的 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];



Best Answer-推荐答案


您可以使用 -[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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap