zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    java环境变量配置 tomcat配置
    asp.net 数据库连接 使用事务处理(一)
    css3 渐变gradient
    asp.net 数据库连接类 (一)
    某某系统HTML脚本植入测试
    BitmapFactory.Options.inSampleSize 的用法
    Comparator和Comparable在排序中的应用(转)
    学习PrintWriter类
    Android使用ListView注意事项
    Android之SurfaceView学习(转)
  • 原文地址:https://www.cnblogs.com/xiangrikui/p/5268757.html
Copyright © 2011-2022 走看看