iOS 加密演算法的使用
1、AES加密
NSData+AES.h檔案
- //
- // NSData-AES.h
- // Smile
- //
- // Created by 周 敏 on 12-11-24.
- // Copyright (c) 2012年 BOX. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- @class NSString;
- @interface NSData (Encryption)
- - (NSData *)AES256EncryptWithKey:(NSString *)key; //加密
- - (NSData *)AES256DecryptWithKey:(NSString *)key; //解密
- @end
NSData+AES.m檔案
- //
- // NSData-AES.h
- // Smile
- //
- // Created by 周 敏 on 12-11-24.
- // Copyright (c) 2012年 BOX. All rights reserved.
- //
- #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
2、BASE64編碼
首先下載GTMBase64檔案,在工程中加入三個檔案
GTMDefines.h
GTMBase64.h
GTMBase64.m
你可以在這裡找到這三個檔案
http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87
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
- // Smile
- //
- // Created by 周 敏 on 12-11-24.
- // Copyright (c) 2012年 BOX. All rights reserved.
- //
- #import <CommonCrypto/CommonDigest.h>
- @interface NSString (MD5)
- - (NSString *)md5Encrypt;
- @end
NSString+MD5.m檔案
- //
- // NSString+MD5Encrypt.h
- // Smile
- //
- // Created by 周 敏 on 12-11-24.
- // Copyright (c) 2012年 BOX. All rights reserved.
- //
- #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
相關文章
- 淺談iOS中常用加密演算法的使用iOS加密演算法
- iOS加密解密演算法iOS加密解密演算法
- 加密演算法的使用加密演算法
- iOS異或加密演算法iOS加密演算法
- PHP中RSA加密演算法的使用PHP加密演算法
- 加密演算法介紹及加密演算法的選擇加密演算法
- iOS加密——概述iOS加密
- 對稱加密演算法----DES加密演算法加密演算法
- 在PHP中使用AES加密演算法加密資料及解密資料PHP加密演算法解密
- springmvc使用RSA演算法加密表單SpringMVC演算法加密
- 開發中的幾種加密演算法的使用場景加密演算法
- iOS 登入加密iOS加密
- iOS中加密、解密iOS加密解密
- iOS - 資料加密iOS加密
- 加密演算法加密演算法
- php ios通用的AES加密方法PHPiOS加密
- 那些常用的加密演算法加密演算法
- Https中公私鑰加密演算法和其使用的RSA演算法分析HTTP加密演算法
- iOS中使用RSA對資料進行加密解密iOS加密解密
- 使用已破解或危險的加密演算法導致的漏洞加密演算法
- iOS 開發加密做法iOS加密
- iOS 幾種加密方法iOS加密
- iOS MD5加密iOS加密
- iOS常見的幾種加密方法iOS加密
- 凱撒加密演算法加密演算法
- 常用加密演算法加密演算法
- RSA加密演算法加密演算法
- Rabbit加密演算法加密演算法
- 加密演算法(一)加密演算法
- SHA加密演算法加密演算法
- Discuz通行證的加密演算法加密演算法
- 逆向中常見的加密演算法加密演算法
- 常見加密演算法及常見加密演算法簡述加密演算法
- 加密解密技術—對稱演算法加密加密解密演算法
- 公鑰加密新演算法——奇異矩陣加密演算法 (轉)加密演算法矩陣
- AES加密 – iOS與Java的同步實現加密iOSJava
- iOS開發中AES的加密和解密iOS加密解密
- java中的使用RSA演算法進行公鑰加密私鑰解密 .Java演算法加密解密