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