首页 > 解决方案 > 我在哪里可以获得 128 个字符的十六进制编码的加密密钥,以使用 Realm Studio 打开加密的 Realm?

问题描述

我们的 Swift 应用程序使用 Realm (10.7.6) 并且它是加密的。我想在 Realm Studio (10.1.2) 中打开 .realm 文件,但它要求提供“128 个字符的十六进制编码加密密钥”。我不知道从哪里得到这个。

顺便说一句,在我的测试应用程序中,如果我不加密,我可以使用 Realm Studio 打开该 .realm 文件,因此 RealmSwift 和 Realm Studio 的版本是兼容的。

为了在应用程序中加密领域,我在这里getKey()使用领域文档中的代码。在该代码中生成的密钥只有 64 个字节,而不是 Realm Studio 要求的 128 个字节。如果我在控制台中得到“64 字节”。如果我添加一个断点并没有好多少:print(key)po key

▿ 64 bytes
  - count : 64
  ▿ pointer : 0x0000600003a14160
    - pointerValue : 105553177166176

我从哪里获得 Realm Studio 要求的“128 个字符的十六进制编码加密密钥”?


更新:正如下面 Jay 的回答中提到的,我使用 Johannes Lund 的回答从这里Data对象转换为十六进制字符串。果然,我可以把那个字符串粘贴到那个 Realm Studio 窗口中。

遗憾的是,正如 Realm 网站上所记录的,您不能在多个进程中打开加密的 Realm。我一直在使用 Realm Studio 来帮助测试我们的集合观察者,但现在我们必须以另一种方式来做。

标签: iosswiftencryptionrealm

解决方案


加密密钥是一个 NSData (Data) 对象。您可以将键的 NSString 对象表示为十六进制值。然后,您可以将该字符串与 Realm Studio 一起使用

我通常发布基于代码的答案,但这里已经有很多关于将数据映射到十六进制字符串的示例。查看这个问题的 Swift 5 答案。Swift 4及更高版本还有很多其他选项。还有这个。


推荐阅读