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