在iOS 3+;中对称加密字符串的正确且安全的方法;

在iOS 3+;中对称加密字符串的正确且安全的方法;,ios,string,encryption,cryptography,Ios,String,Encryption,Cryptography,我在密码学方面几乎是个新手,但我正在尝试加密一些数据并将其保存在iOS 3中的文件中,因为我不希望用户直接进入并编辑该文件。在iOS 3中,安全(相对)加密数据的正确方法是什么?我在网上找到的大多数文档都是针对iOS 5的 任何帮助都将不胜感激 谢谢, Alex我对iOS3了解不够,无法提出一些已经内置的建议。如果您需要从头开始开发加密,那么编程就非常容易。它现在已经过时,但仍然相当安全。从您的角度来看,它的主要缺点是您需要使用一个好的KDF(密钥派生函数)来选择一个安全密钥,例如。我对iOS3

我在密码学方面几乎是个新手,但我正在尝试加密一些数据并将其保存在iOS 3中的文件中,因为我不希望用户直接进入并编辑该文件。在iOS 3中,安全(相对)加密数据的正确方法是什么?我在网上找到的大多数文档都是针对iOS 5的

任何帮助都将不胜感激

谢谢,
Alex

我对iOS3了解不够,无法提出一些已经内置的建议。如果您需要从头开始开发加密,那么编程就非常容易。它现在已经过时,但仍然相当安全。从您的角度来看,它的主要缺点是您需要使用一个好的KDF(密钥派生函数)来选择一个安全密钥,例如。

我对iOS3不太了解,无法提出一些内置的建议。如果您需要从头开始开发加密,那么编程就非常容易。它现在已经过时,但仍然相当安全。从您的角度来看,它的主要缺点是您需要使用一个好的KDF(密钥派生函数)来选择一个安全密钥,例如。

正确的方法是在IOS中使用苹果的密钥链。不幸的是,正如post所说,这对于IOs3来说并不是那么安全。对于ios4,它工作正常

有些人可能有一个付费的解决方案,但你最终可能会自己写一个。你会想要的

  • 使用密钥派生函数(如)从用户提供的密码派生密钥。事实上,您需要导出两个键,因此您需要使用两种不同的盐运行两次

  • 将AES与IV和一个派生密钥一起使用(这部分很重要,而我所看到的所有示例代码都没有)。在你的密码文本中加入盐和IV

  • 对上述所有数据使用hmac和其他派生密钥。准备好了

  • 要解密,请使用密钥派生算法使用密码和预加盐重新驱动密钥,重新生成hmac,获取生成的密钥的sha1散列,并分别获取消息中该密钥的sha1散列,并验证它们是否相同(不要直接比较hmac)然后使用另一个派生密钥和前缀IV解密数据

  • 这对用户来说是一种痛苦和烦恼,因为他们需要输入一个单独的密码,但是没有安全的方法。如果你将密钥存储在iphone上,有人可以读取并解密数据。是的,你可以加密密钥,但是你怎么存储密钥呢

    我认为苹果公司没有合适的objective c绑定来实现这些功能,所以您需要使用通用的crypto c API。它被记录在案。objective-c API看起来毫无用处,但都有文档记录

    正确的做法是在IOS中使用苹果的钥匙链。不幸的是,正如post所说,这对于IOs3来说并不是那么安全。对于ios4,它工作正常

    有些人可能有一个付费的解决方案,但你最终可能会自己写一个。你会想要的

  • 使用密钥派生函数(如)从用户提供的密码派生密钥。事实上,您需要导出两个键,因此您需要使用两种不同的盐运行两次

  • 将AES与IV和一个派生密钥一起使用(这部分很重要,而我所看到的所有示例代码都没有)。在你的密码文本中加入盐和IV

  • 对上述所有数据使用hmac和其他派生密钥。准备好了

  • 要解密,请使用密钥派生算法使用密码和预加盐重新驱动密钥,重新生成hmac,获取生成的密钥的sha1散列,并分别获取消息中该密钥的sha1散列,并验证它们是否相同(不要直接比较hmac)然后使用另一个派生密钥和前缀IV解密数据

  • 这对用户来说是一种痛苦和烦恼,因为他们需要输入一个单独的密码,但是没有安全的方法。如果你将密钥存储在iphone上,有人可以读取并解密数据。是的,你可以加密密钥,但是你怎么存储密钥呢

    我认为苹果公司没有合适的objective c绑定来实现这些功能,所以您需要使用通用的crypto c API。它被记录在案。似乎无用的objective-c API已记录在案