菜鸟教程小白 发表于 2022-12-13 11:57:17

iphone - 如何在 iphone 中安全地存储 SQLite 数据库..?


                                            <p><p>我有一个包含 secret 信息的 SQLite 数据库。所以我关心的是如何将它存储在 iPhone 中,这样它是安全的,黑客无法获得它。我查看了 ipad 提供的硬件加密,但无法弄清楚如何使用它。感谢任何帮助...</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可能会考虑解决问题的不同方法。</p>

<ul>
<li><p>加密值,使用 md5 + salt 加密存储在 CoreData 中。您可以根据用户设备 UUID 和一些额外的“盐”生成特殊 key 来存储数据。请注意,Apple 将在未来贬低设备个性化值(value)。但另一方面,您可以通过用户身份验证接收特殊 key ,并从发布请求中接收此 key 。对于加密,您可以使用内置框架:<code>#import <CommonCrypto/CommonDigest.h></code>。您可以在网上找到很多示例。</p></li>
<li><p>加密文档文件夹中的整个 sqlite 文件。这可能让我很棘手,并且以前没有遇到过这种方法。</p></li>
</ul>

<p>编辑:
这是可用于接收使用 md5 数据加密的代码示例:
这是.h文件</p>

<pre><code>#import &lt;Foundation/Foundation.h&gt;

@interface NSString (MyExtensions)
- (NSString *) md5;
@end

@interface NSData (MyExtensions)
- (NSString *)md5;
@end
</code></pre>

<p>这是 .m 文件:</p>

<pre><code>#import &#34;MyExtensions.h&#34; //here should be your .h file name
#import &lt;CommonCrypto/CommonDigest.h&gt; // Need to import for CC_MD5 access

@implementation NSString (MyExtensions)
- (NSString *) md5
{
    const char *cStr = ;
    unsigned char result;
    CC_MD5( cStr, strlen(cStr), result ); // This is the md5 call
    return [NSString stringWithFormat:
            @&#34;%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x&#34;,
            result, result, result, result,
            result, result, result, result,
            result, result, result, result,
            result, result, result, result
            ];
}
@end

@implementation NSData (MyExtensions)
- (NSString *)md5
{
    unsigned char result;
    CC_MD5( self.bytes, self.length, result ); // This is the md5 call
    return [NSString stringWithFormat:
            @&#34;%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x&#34;,
            result, result, result, result,
            result, result, result, result,
            result, result, result, result,
            result, result, result, result
            ];
}
@end
</code></pre>

<p>因此,如果您将此文件包含到代码的任何位置,您可以简单地调用此函数:</p>

<pre><code>NSString *myStringToEncrypt = @&#34;Confidential information&#34;;
NSString *myMD5 = ;
</code></pre>

<p>btw:你应该知道,<strong>MD5 函数</strong> 只是散列函数,它返回你控制的数据总和。如果你想<strong>加密</strong>,你可以看看 <strong>AES256</strong> 加密方法。 CommonCrypto 也提供了它。方法取决于您的目标。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 如何在 iphone 中安全地存储 SQLite 数据库..?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/9530104/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/9530104/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 如何在 iphone 中安全地存储 SQLite 数据库..?