我需要将用户密码存储在我的iPhone应用程序中.
将应用程序发布到应用商店时,我必须告诉Apple应用程序中是否有用于导出的加密.
我不希望我的应用仅限于美国,但我也不希望以明文形式在网上存储或发送密码.
所以基本上问题是,我能否以不会限制我的应用程序的方式加密密码?
只需将密码存储在钥匙串中即可.它是Apple提供的系统API,您无需了解有关加密的任何信息.Apple发货,他们有责任确保系统框架的出口合规性.如果他们在任何禁止的地方出售设备,他们可能会使用较弱(或没有)加密,但如果您使用可用的API,则不会在二进制文件中提供任何导出受限的加密代码,这是您解释的唯一方式这样做意味着苹果公司将在每部iPhone上发售.
话虽如此,我不是律师,如果你担心,我建议咨询一下.没有其他程序员的建议与从根本上是一个法律问题特别相关.
首先,如果用户名和密码在手机上加密和解密,那么解密密钥显然也在手机上,几乎毫无价值.我不担心存储在手机上加密的用户名和密码.
对于安全通信,您应该使用SSL,该SSL可能位于手机上已有的库中.如果您使用的是属于手机操作系统的库,我认为这并不意味着您的应用程序"包含加密".
当然,我不是律师.谁知道 - 法律可能会认为"猪拉丁"是一种有效的加密技术.
看起来提供的crypt()函数可用于密码:
该库(FreeSec 1.0)是在美国境外开发的,作为USonly libcrypt加密库的无阻碍替代品.只有当crypt()仅用于身份验证目的并且避免使用上面列出的其他程序员接口时,才能从美国导出与crypt()接口链接的程序.库中已经特别小心,因此只使用crypt()接口的程序不会引入其他组件.
(来自crypt(3)的iphone文档)