在iPhone中是否有用于编码或解码密码的API?
答案 0 :(得分:4)
有Common Crypto API。
#import <CommonCrypto/CommonCryptor.h>
+ (NSData *)doCipher:(NSData *)dataIn
iv:(NSData *)iv
key:(NSData *)symmetricKey
context:(CCOperation)encryptOrDecrypt
{
CCCryptorStatus ccStatus = kCCSuccess;
size_t cryptBytes = 0; // Number of bytes moved to buffer.
NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];
ccStatus = CCCrypt( encryptOrDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
symmetricKey.bytes,
kCCKeySizeAES128,
iv.bytes,
dataIn.bytes,
dataIn.length,
dataOut.mutableBytes,
dataOut.length,
&cryptBytes);
if (ccStatus != kCCSuccess) {
NSLog(@"CCCrypt status: %d", ccStatus);
}
dataOut.length = cryptBytes;
return dataOut;
}
还要将Security.framework添加到项目中。
如果安全性很重要,请考虑让具有安全经验的人员创建代码和协议。如果安全性不重要,只需以明文形式发送密码。
应用程序中的一些错误并不是那么糟糕,应用程序仍然基本可行,安全性中的一个错误以及所有安全性都将丢失。
良好的安全性并不像人们想象的那么容易。
答案 1 :(得分:0)
如果您只对密码感兴趣,您可以使用散列函数(md5,sha)并将输入散列与密码的散列进行比较。这样,密码永远不会以明文保存,如果你的服务器有一天被黑客攻击,他们只会得到哈希并且必须进行预映像攻击才能获得密码。
答案 2 :(得分:0)
您要做的是使用安全框架。该网站为您提供了示例:
对称加密:http://greghaygood.com/2009/01/17/symmetric-encryption-with-the-iphone-sdk-and-securityframework
非对称加密:http://greghaygood.com/2009/01/17/asymmetric-encryption-with-the-iphone-sdk-and-securityframework
我希望这会有所帮助......
灵光