MD5加密

MD5加密后的结果是由32个16进制数组成:
void
LP_MD5(const char *string,CC_LONG length,unsigned char *md){ md5加密的内部实现步骤: //创建MD5方法 CC_MD5_CTX md5; //初始化 CC_MD5_init(&md5); //更新加密参数 CC_MD5_Update(&md5,string,length); //结束加密 CC_MD5_Final(md,&md5); }

以上是xcode中封装的MD5加密的具体实现,加密是用C语言写的,在iOS工程开发中,经常使用的开发环境是OC语言,那么在OC中怎么实现加密过程

-(NSString *)md5String{

    unsigned char md[CC_MD5_DIGEST_LENGTH];
    CC_MD5(self.UTF8String, (CC_LONG)self.length, md);
    
    //获取密文
    NSMutableString *resultString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH];
    
    for (int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
        //将加密结果的数组内容以16进制的形式拼接到可变的字符串中
        [resultString appendFormat:@"%02X",md[i]];
    }

    return resultString;

}

在开发中,为了保存用户信息安全,经常使用加密方式存储用户名、密码,由于MD5的残缺性,不可逆性,能够相对安全。

在苹果系统中还有一种加密保存方式,那就是钥匙串保存,用封装的类KeychainItemWrapper实现工程中访问钥匙串,具体应用如下:

  KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"keyChainItem" accessGroup:nil];
    //系统提供的键值对中的键,非系统的键没办法添加到字典中
    id kUsernameKey = (__bridge id)kSecAttrAccount;
    id kPasswordKey = (__bridge id)kSecValueData;
    //存值
    [wrapper setObject:@"user" forKey:kUsernameKey];
    [wrapper setObject:@"123" forKey:kPasswordKey];
    
    //通过相同的标记创建的钥匙串中具有相同的数据,可以看做同一个对象
    KeychainItemWrapper *wrapper1 = [[KeychainItemWrapper alloc] initWithIdentifier:@"keyChainItem" accessGroup:nil];
    //取值
     NSString *name =  [wrapper1 objectForKey:kUsernameKey];
    
    NSLog(@"------%@",name);
原文地址:https://www.cnblogs.com/xiangrikui/p/5268757.html