iOS开发的—— 各种加密的运用(MD5,base64,DES,AES,RSA,DSA)

着力的独为加密算法:

BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鉴别码)

MD5、SHA、HMAC这三种加密算法,可谓是未可接加密,就是不行解密的加密方法。我们一般只将她们当加密的底蕴。单纯的上述三种植之加密并无牢靠。

BASE64,按照RFC2045之概念,Base64被定义为:Base64内容传送编码为规划用来将自由序列的8各项字节描述为同一种是为人一直识别的样式,常见于邮件、http加密,截取http信息,你不怕会见发现登录操作的用户称、密码字段通过BASE64加密的。

复杂的相得益彰加密(DES、PBE)、非对如加密算法:

  DES(Data Encryption Standard,数据加密算法)   
AES(高级加密标准)代替DES
  PBE(Password-based encryption,基于密码验证)
  RSA(算法的讳为发明者的讳命名:Ron Rivest, AdiShamir 和Leonard
Adleman)
  DH(Diffie-Hellman算法,密钥一致协商)
  DSA(Digital Signature Algorithm,数字签名)
  ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

iOS应用代码加密分为以下几种:

1)本地数据加密

针对NSUserDefaults,sqlite存储文件数量加密,保护帐号以及要紧信息。

2)URL编码加密

针对先后中出现的URL进行编码加密,防止URL被静态分析

3)网络传输数据加密

针对客户端传输数据提供加密方案,有效防范通过网络接口的遏止获取

4)方法体,方法名高级混淆

对应用程序的方法名和方法体进行模糊,保证源码被逆向后无法解析代码

5)程序结构混排加密

对应用程序逻辑结构进行打乱混排,保证源码可读性降到低

 

下先介绍MD5:

事先创造一个MD5文件,MD5.h

#import <Foundation/Foundation.h>

@interface MD5 : NSObject
+(NSString *)md5HexDigest:(NSString *)input;
@end

MD5.m

#import “MD5.h”
#import <CommonCrypto/CommonDigest.h>

@implementation MD5

+(NSString *)md5HexDigest:(NSString *)input{

    const char* str = [input UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH]; //16位字节

    CC_MD5(str,(int)strlen(str),result);
    NSMutableString *ret = [NSMutableString
stringWithCapacity:CC_MD5_DIGEST_LENGTH];
    
    for (int i = 0; i< CC_MD5_DIGEST_LENGTH; i++) {
        
        [ret appendFormat:@”%2s”,result];
    }

    return ret;
}

@end

 

ios调用MD5加密方法如下:

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

BASE64

base64图片转为base64:

 NSString *imageDocPath = [documentPath
stringByAppendingPathComponent:@”FeekImageFile”];
 NSString *imagePath=[NSString
stringWithFormat:@”%@/%@”,imageDocPath,imageArry[i]];
 NSData *data=[[NSFileManager defaultManager]
contentsAtPath:imagePath];
   //        NSData *data = UIImageJPEGRepresentation([UIImage
imageNamed:@”icon_pic_no”], 1.0f);
  NSString *encodedImageStr = [data
base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

base64的加密底下:

采取前,记得要来以下三单文本:

GTMDefines.h

GTMBase64.h

GTMBase64.m

下载地址:https://github.com/r258833095/GTMBase64

.h文件中代码如下

#import <Foundation/Foundation.h>
#import “GTMBase64.h”

@interface Base64 : NSObject

+(NSString *)encodeBase64String:(NSString *)input;
+(NSString *)decodeBase64String:(NSString *)input;

+(NSString *)encodeBase64Data:(NSData *)data;
+(NSString *)decodeBase64Data:(NSData *)data;
@end

.m文件被代码如下
#import “Base64.h”

@implementation Base64

+(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;

}

@end

ios调用BASE64加密方法如下:

NSString *baseEncodeString = [GTMBase64
encodeBase64String:password];
NSString *baseDecodeString = [GTMBase64
decodeBase64String:baseEncodeString];

NSLog(@”baseEncodeString =
%@”,baseEncodeString);
NSLog(@”baseDecodeString = %@”,baseDecodeString);

 DES

 

AES

 

RSA

 

DSA

 

May there be enough clouds in your life to make a beautiful sunset…

网站地图xml地图