`
iaiai
  • 浏览: 2196408 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iOS常用加密方法(aes、md5、base64)

 
阅读更多
iOS常用加密方法(aes、md5、base64)

1、AES加密
NSData+AES.h文件
//  
//  NSData-AES.h  
//  
//  Created by iaiai
//  QQ:176291935
//  
  
#import <Foundation/Foundation.h>  
  
@class NSString;  
  
@interface NSData (Encryption)  
  
- (NSData *)AES256EncryptWithKey:(NSString *)key;   //加密  
- (NSData *)AES256DecryptWithKey:(NSString *)key;   //解密  
  
@end

NSData+AES.m文件
//  
//  NSData-AES.h  
//  
//  Created by iaiai
//  QQ:176291935
//  
  
#import "NSData+AES.h"  
#import <CommonCrypto/CommonCryptor.h>  
  
@implementation NSData (Encryption)  
  
- (NSData *)AES256EncryptWithKey:(NSString *)key {//加密  
    char keyPtr[kCCKeySizeAES256+1];  
    bzero(keyPtr, sizeof(keyPtr));  
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];  
    NSUInteger dataLength = [self length];  
    size_t bufferSize = dataLength + kCCBlockSizeAES128;  
    void *buffer = malloc(bufferSize);  
    size_t numBytesEncrypted = 0;  
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,  
                                          kCCOptionPKCS7Padding | kCCOptionECBMode,  
                                          keyPtr, kCCBlockSizeAES128,  
                                          NULL,  
                                          [self bytes], dataLength,  
                                          buffer, bufferSize,  
                                          &numBytesEncrypted);  
    if (cryptStatus == kCCSuccess) {  
        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];  
    }  
    free(buffer);  
    return nil;  
}  
  
  
- (NSData *)AES256DecryptWithKey:(NSString *)key {//解密  
    char keyPtr[kCCKeySizeAES256+1];  
    bzero(keyPtr, sizeof(keyPtr));  
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];  
    NSUInteger dataLength = [self length];  
    size_t bufferSize = dataLength + kCCBlockSizeAES128;  
    void *buffer = malloc(bufferSize);  
    size_t numBytesDecrypted = 0;  
    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128,  
                                          kCCOptionPKCS7Padding | kCCOptionECBMode,  
                                          keyPtr, kCCBlockSizeAES128,  
                                          NULL,  
                                          [self bytes], dataLength,  
                                          buffer, bufferSize,  
                                          &numBytesDecrypted);  
    if (cryptStatus == kCCSuccess) {  
        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];  
    }  
    free(buffer);  
    return nil;  
}  
  
@end


这里AES在iOS加过密以后以nsdata的形式存下来,如果想以nsstring形式存储,那么对nsdata进行base64位编码。

2、BASE64编码
首先下载GTMBase64文件,在工程中加入三个文件
GTMDefines.h
GTMBase64.h
GTMBase64.m
你可以在这里找到这三个文件
http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87
你也可以在下面的demo里面找到这3个文件,demo会完整实现文章里面常用的3种编码方法。
我在此稍微封装一下:

.h文件
#pragma mark - base64  
+ (NSString*)encodeBase64String:(NSString *)input;  
+ (NSString*)decodeBase64String:(NSString *)input;  
+ (NSString*)encodeBase64Data:(NSData *)data;  
+ (NSString*)decodeBase64Data:(NSData *)data;

.m文件
#pragma mark - base64  
+ (NSString*)encodeBase64String:(NSString * )input {   
    NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];   
    data = [GTMBase64 encodeData:data];   
    NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];   
    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] autorelease];   
    return base64String;  
}   
  
+ (NSString*)encodeBase64Data:(NSData *)data {  
    data = [GTMBase64 encodeData:data];   
    NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];  
    return base64String;  
}  
  
+ (NSString*)decodeBase64Data:(NSData *)data {  
    data = [GTMBase64 decodeData:data];   
    NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];  
    return base64String;  
}

3、MD5加密
NSString+MD5.h文件
//  
//  NSString+MD5Encrypt.h  
//  
//  Created by iaiai
//  QQ:176291935
//  
  
#import <CommonCrypto/CommonDigest.h>  
  
@interface NSString (MD5)  
  
- (NSString *)md5Encrypt;  
  
@end

NSString+MD5.m文件
//  
//  NSString+MD5Encrypt.h  
//  
//  Created by iaiai
//  QQ:176291935
//  
  
#import "NSString+MD5.h"  
  
@implementation NSString (MD5)  
  
- (NSString *)md5Encrypt {  
    const char *original_str = [self UTF8String];  
    unsigned char result[CC_MD5_DIGEST_LENGTH];  
    CC_MD5(original_str, strlen(original_str), result);  
    NSMutableString *hash = [NSMutableString string];  
    for (int i = 0; i < 16; i++)  
        [hash appendFormat:@"%02X", result[i]];  
    return [hash lowercaseString];  
}  
  
@end



现在去google网站上下载还得番习习墙出去,天朝真郁闷,我这里把下载到的base64的三个文件直接打包上传上来,谁需要谁就下吧...
分享到:
评论

相关推荐

    IOS加密代码 ase md5 base64

    在iOS项目中,`Encryption`文件可能包含了实现这些加密方法的示例代码,包括AES加密、MD5哈希和Base64编码的API调用。通过学习和理解这些代码,开发者可以更好地理解和运用这些加密技术,提高应用程序的安全性。记住...

    IOS开发之----常用加密方法(AES、MD5、Base64)

    本篇将详细介绍三种常用的加密方法:AES(高级加密标准)、MD5(消息摘要算法5)以及Base64编码。 **AES加密** AES,全称Advanced Encryption Standard,是一种块密码,广泛用于对大量数据进行加密。它基于替换和...

    AES加密base64编码

    在iOS平台上,我们可以使用`CommonCrypto`库或者Swift的`CryptoKit`框架来实现AES加密,然后使用内置的`Data`类的`base64Encoded`方法进行Base64编码。 **应用场景** 这种组合方式常用于敏感信息的存储和传输,...

    Base64转码,AES加密解密,IOS,Android,Java

    Base64转码,AES加密解密,IOS,Android,Java 后台。 本工程可以直接使用,而且与IOS,Android,JAVA 已调通。 主要用于客户端进行通信,数据之间地安全性。对数据进行加密和解密。 适用于银行等较为保密的项目中。 ...

    swift-iOS数据安全--base64md5AESDESRSA

    本主题主要涉及了基础编码技术如Base64,以及密码学中的哈希算法MD5,对称加密AES和DES,以及非对称加密RSA。 1. **Base64**:Base64是一种用于将二进制数据转换为可打印ASCII字符的编码方式。在iOS中,`Data`对象...

    IOS AES DES BASE64 RSA 所有加密代码

    本文将深入探讨在iOS中使用AES、DES、BASE64和RSA四种加密技术,并提供一个HelloWorld示例代码来帮助理解它们的用法。 首先,AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,适用于大量数据的...

    AES加密解密算法 iOS和Android完美实现

    在iOS和Android平台上实现AES加密解密是开发者经常遇到的任务,尤其对于需要跨平台传输和存储敏感信息的场景。本篇文章将详细探讨AES加密解密算法在iOS和Android平台上的实现原理以及具体步骤。 首先,AES算法基于...

    IOS base64加密

    在iOS开发中,Base64编码是一种常见的数据转换方法,用于将二进制数据转换为ASCII字符串,以便在网络上传输或者存储。Base64是一种基于64个字符的编码方式,这64个字符包括大小写字母、数字以及"+"和"/",在末尾可能...

    android ios java后台通用DES base64加密

    对于iOS,可以利用`CommonCrypto`框架来实现DES加密,而`NSData`类的`base64EncodedStringWithOptions:`方法则能进行Base64编码。 为了实现跨平台的兼容性,Android、iOS和Java的代码需要保持一致的密钥管理和加密...

    iOS实现AES加密

    5. 除了AES加密,还可以结合哈希算法(如SHA-256)和随机数生成器来增强安全性,例如在密钥生成时使用。 6. 最后,为了保证程序的健壮性,记得处理可能出现的错误,比如密钥不匹配、加密失败等,并进行适当的错误...

    iOS加密解密大全含注释(MD5,SHA,Base64等)

    iOS加密解密大全(MD5,SHA,Base64等) Encrypt/Decrypt: AES. Hash: MD5, SHA(SHA1, SHA224, SHA256, SHA384, SHA512). Encode/Decode: Base64, Hex.

    iOS AES加密 PHP解密

    加密后的数据通常会以Base64编码的形式发送到服务器,以确保传输过程中不受影响。在PHP端,我们可以使用openssl扩展来解密这些数据。以下是一个PHP解密示例: ```php function aes_decrypt($encrypted, $key) { $...

    ios-网络数据安全 --- base64 和 MD5 的简单封装.zip

    Base64和MD5是两种常见的数据处理方式,常用于加密和编码。在这个压缩包文件中,"Class_09_Secrity_CJL"可能包含了关于这两种技术的详细讲解和示例代码。 1. **Base64编码**:Base64是一种将二进制数据转化为可打印...

    iOS 3种常见加密方式

    本篇将详细介绍三种常见的iOS加密方式:Base64编码、MD5哈希以及更高级的AES加密。 一、Base64编码 Base64是一种用于在网络上传输二进制数据的编码方式。它将任意可打印字符转换为一个特定的4字符长度的字符串,...

    iOS加密方法

    本文将详细探讨标题中提到的五种加密算法:RSA、AES、DES、MD5以及Base64,并结合描述,了解它们在iOS中的应用。 1. **RSA**:RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。...

    加密使用的base64类

    在实际应用中,如果需要保护数据安全,应当使用专业的加密算法,如AES、RSA等,而Base64更适合用于数据格式转换和网络传输中的编码需求。对于标签中的"ios",这意味着这些Base64操作是在iOS平台上进行的,开发者需要...

    demo~ios-md5等

    标题"demo~ios-md5等"和描述中提到的"iOS常用加密方法(aes、md5、base64)"涉及到的是三种常见的加密技术:MD5、AES和Base64。下面将详细解释这些加密方法以及它们在iOS中的应用。 1. **MD5(Message-Digest ...

    Base64加密解密封装

    我们可以预想JKCommonFunc.h中会定义一个类(例如`JKBase64Util`),声明了Base64编码和解码的相关方法,如`+ (NSString *)base64Encode:(NSData *)data`和`+ (NSData *)base64Decode:(NSString *)base64String`。...

Global site tag (gtag.js) - Google Analytics