2011-03-06 92 views

回答

14

加密会给你一些安全性。问题是你的程序也需要解密密码,这意味着它必须把密钥存储在某个地方。这会使其容易受到逆向工程的影响。更好的方法是对密码使用one-way function(如散列)并存储该散列值。当用户输入密码时,您将单向函数应用于密码并将结果与​​存储的值进行比较。以这种方式,密码不会受到损害(好吧,总会有字典攻击,但这是密码强度的问题)。

代替使用NSUserDefaults,您最好使用iOS Keychain Services。它的主要目的是安全地存储用户凭证。苹果已经为你做了所有艰苦的工作。利用它。

1

你可以使用一个NSDictionary的NSArray或保存你的价值观,你也应该加密数据NSUserDefaults的,因为就像它可以被任何人访问的plist中

+0

谢谢,你有一个关于如何加密在Objective-C的密码的建议吗? – Sefran2 2011-03-06 13:13:48

+0

尝试aes 256加密,一种简单的方法是在NSData中创建一个类别并将其与字符串一起使用,在这里您可以通过一些示例http://iphonedevelopment.blogspot.com/2009/02/strong -encryption换可可可可touch.html – JonLOo 2011-03-06 13:21:54

8

不,这是不安全的。

如果您需要安全地存储数据,请使用keychain

相关问题