zoukankan      html  css  js  c++  java
  • iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全

    演示样例项目下载地址  https://github.com/cerastes/Encryption


    1MD5

    创建MD5类

    #import <Foundation/Foundation.h>
    
    @interface CJMD5 : NSObject
    +(NSString *)md5HexDigest:(NSString *)input;
    @end

    #import "CJMD5.h"
    #import <CommonCrypto/CommonDigest.h>
    
    @implementation CJMD5
    +(NSString *)md5HexDigest:(NSString *)input{
        
        const char* str = [input UTF8String];
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        CC_MD5(str, strlen(str), result);
        NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
        
        for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
            [ret appendFormat:@"%02X",result];
        }
        return ret;
    }
    @end

    MD5是不可逆的仅仅有加密没有解密使用方式例如以下

    NSString *userName = @"cerastes";
    NSString *password = @"hello Word";
    //   MD5加密
    NSString *md5 = [CJMD5 md5HexDigest:password];
    NSLog(@"%@",md5);

    2AES加密

    AES加密开源码git下载地址

    https://github.com/Gurpartap/AESCrypt-ObjC

    用法

    //  AES加密
        NSString *encryptedData = [AESCrypt encrypt:userName password:password];//加密
        NSString *message = [AESCrypt decrypt:encryptedData password:password]; //解密
        NSLog(@"加密结果 = %@",encryptedData);
        NSLog(@"解密结果 = %@",message);

    3 BASE64加密

    下载地址 https://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87

     加入例如以下方法

    .h

    + (NSString*)encodeBase64String:(NSString *)input;
    + (NSString*)decodeBase64String:(NSString *)input;
    + (NSString*)encodeBase64Data:(NSData *)data;
    + (NSString*)decodeBase64Data:(NSData *)data;

    .m

    + (NSString*)encodeBase64String:(NSString * )input {
        NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
        data = [GTMBase64 encodeData:data];
        NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        return base64String;
    }
    
    + (NSString*)decodeBase64String:(NSString * )input {
        NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
        data = [GTMBase64 decodeData:data];
        NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        return base64String;
    }
    
    + (NSString*)encodeBase64Data:(NSData *)data {
        data = [GTMBase64 encodeData:data];
        NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        return base64String;
    }
    
    + (NSString*)decodeBase64Data:(NSData *)data {
        data = [GTMBase64 decodeData:data];
        NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        return base64String;
    }
    

    用法

    //    BASE64加密
        NSString *baseEncodeString = [GTMBase64 encodeBase64String:password];
        NSString *baseDecodeString = [GTMBase64 decodeBase64String:baseEncodeString];
        NSLog(@"baseEncodeString = %@",baseEncodeString);
        NSLog(@"baseDecodeString = %@",baseDecodeString);
    


  • 相关阅读:
    CareerCup Questions List 职业杯题目列表
    [CareerCup] Guards in a museum 博物馆的警卫
    [LeetCode] 7. Reverse Integer 翻转整数
    Python笔记11------一个K-means聚类的小例子
    python笔记10-----便捷网络数据NLTK语料库
    Python笔记9-----不等长列表转化成DataFrame
    Python笔记8----DataFrame(二维)
    Python笔记7----Pandas中变长字典Series
    Python笔记6----数组
    Python笔记5----集合set
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3890328.html
Copyright © 2011-2022 走看看