ios - 从 key 字符串生成 64 字节长的 NSData
<p><p>我认为这会生成随机的 64 字节 NSData。</p>
<pre><code>uint8_t buffer;
SecRandomCopyBytes(kSecRandomDefault, 64, buffer);
NSData *keyData = [ initWithBytes:buffer length:sizeof(buffer)];
</code></pre>
<p>我想像这样生成 64 字节的 NSData,但不是随机数据。
如何使用给定的键(如“com.this.is.akey”)生成 64 字节的 NSData。</p>
<p>试过这个,但它给了我错误的字节大小(不是 64 字节)。</p>
<pre><code>NSString *base64EncodedString = [[@"somekey.here" dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0];
NSData *encodedData = [ initWithBase64EncodedString:base64EncodedString
options:0];
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您可以使用 <code>-</code> 将 <code>NSString</code> 转换为 <code>NSData</code>。</p>
<pre><code>NSString *key = @"com.this.is.akey";
NSData *keyData = ;
</code></pre>
<p>如果数据长度小于或大于 64 字节,则应填充或截断数据以精确到 64 字节。</p>
<pre><code>if (keyData.length != 64) {
NSMutableData *mutableData = keyData.mutableCopy;
mutableData.length = 64;
keyData = mutableData.copy;
}
</code></pre>
<p>然后,您可以将 <code>NSData</code> 对象传递给 <code>RLMRealmConfiguration.encryptionKey</code>。</p>
<pre><code>RLMRealmConfiguration *config = ;
config.encryptionKey = keyData;
NSError *error = nil;
RLMRealm *realm = ;
</code></pre></p>
<p style="font-size: 20px;">关于ios - 从 key 字符串生成 64 字节长的 NSData,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/34854250/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/34854250/
</a>
</p>
页:
[1]