iOS上的密码编码和解码

时间:2011-09-28 11:39:19

标签: iphone passwords

在iPhone中是否有用于编码或解码密码的API?

3 个答案:

答案 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

我希望这会有所帮助......

灵光