AES加密解密
2016-01-05 00:00
225 查看
摘要: 新建工程 OS X Command Line Tool 继承NSObject的工程 引入.h .m 或者创建.h.m写下面的代码 引入框架
//
// main.m
// AES加密
//
// Created by dc008 on 16/1/5.
// Copyright © 2016年 lin. All rights reserved.
//
// AES和MD5相对比base64安全性更高
#import <Foundation/Foundation.h>
#import "NSData+AES.h"
int main() {
NSString *key = @"99";//钥匙
NSString *secret = @"加密内容";//准备加密的内容
//加密- (NSData *)AES256EncryptWithKey:(NSString *)key
NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipher = [plain AES256EncryptWithKey:key];
NSLog(@"加密后:%@",cipher);
NSString *result = [[NSString alloc]initWithData:cipher encoding:NSUTF8StringEncoding];
NSLog(@"[[[[[%@",result);
//解密- (NSData *)AES256DecryptWithKey:(NSString *)key
for (int i = 1; i <= 100; i++) {
plain = [cipher AES256DecryptWithKey:[NSString stringWithFormat:@"%d",i]];
result = [[NSString alloc]initWithData:plain encoding:NSUTF8StringEncoding];
if (result != NULL) {
NSLog(@"%d",i);
NSLog(@"解密后: %@",result);
}
}
// plain = [cipher AES256DecryptWithKey:key];
// result = [[NSString alloc]initWithData:plain encoding:NSUTF8StringEncoding];
// NSLog(@"解密后: %@",result);
return 0;
}
//
// NSData+AES.h
// oc aes
//
// Created by 朱毅成 on 16/1/4.
// Copyright © 2016年 朱毅成. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSData(AES)
- (NSData *)AES256EncryptWithKey:(NSString *)key; //加密
- (NSData *)AES256DecryptWithKey:(NSString *)key; //解密
@end
//
// NSData+AES.m
// oc aes
//
// Created by 朱毅成 on 16/1/4.
// Copyright © 2016年 朱毅成. All rights reserved.
//
#import "NSData+AES.h"
#import <CommonCrypto/CommonCryptor.h>
@implementation NSData(AES)
- (NSData*)AES256EncryptWithKey:(NSString*)key {
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
[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,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
- (NSData*)AES256DecryptWithKey:(NSString*)key {
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[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,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer); //free the buffer;
return nil;
}
@end
//
// main.m
// AES加密
//
// Created by dc008 on 16/1/5.
// Copyright © 2016年 lin. All rights reserved.
//
// AES和MD5相对比base64安全性更高
#import <Foundation/Foundation.h>
#import "NSData+AES.h"
int main() {
NSString *key = @"99";//钥匙
NSString *secret = @"加密内容";//准备加密的内容
//加密- (NSData *)AES256EncryptWithKey:(NSString *)key
NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipher = [plain AES256EncryptWithKey:key];
NSLog(@"加密后:%@",cipher);
NSString *result = [[NSString alloc]initWithData:cipher encoding:NSUTF8StringEncoding];
NSLog(@"[[[[[%@",result);
//解密- (NSData *)AES256DecryptWithKey:(NSString *)key
for (int i = 1; i <= 100; i++) {
plain = [cipher AES256DecryptWithKey:[NSString stringWithFormat:@"%d",i]];
result = [[NSString alloc]initWithData:plain encoding:NSUTF8StringEncoding];
if (result != NULL) {
NSLog(@"%d",i);
NSLog(@"解密后: %@",result);
}
}
// plain = [cipher AES256DecryptWithKey:key];
// result = [[NSString alloc]initWithData:plain encoding:NSUTF8StringEncoding];
// NSLog(@"解密后: %@",result);
return 0;
}
//
// NSData+AES.h
// oc aes
//
// Created by 朱毅成 on 16/1/4.
// Copyright © 2016年 朱毅成. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSData(AES)
- (NSData *)AES256EncryptWithKey:(NSString *)key; //加密
- (NSData *)AES256DecryptWithKey:(NSString *)key; //解密
@end
//
// NSData+AES.m
// oc aes
//
// Created by 朱毅成 on 16/1/4.
// Copyright © 2016年 朱毅成. All rights reserved.
//
#import "NSData+AES.h"
#import <CommonCrypto/CommonCryptor.h>
@implementation NSData(AES)
- (NSData*)AES256EncryptWithKey:(NSString*)key {
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
[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,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
- (NSData*)AES256DecryptWithKey:(NSString*)key {
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[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,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer); //free the buffer;
return nil;
}
@end
相关文章推荐
- md5和base64加密解密
- IOS7原生API进行二维码条形码的扫描
- IOS 美图 滤镜效果 CIFilter和UIImagePickerController
- IOS UIDevice_设备
- ZXingObjC 开源框架 生成二维码
- myeclipse连接SQL 2012
- 文件上传
- 文件上传第二种方式
- AsyncHttpClient, RequestParams ,AsyncHttpResponseHandler三个类使用方法
- Linux 配置LNMP服务器 并配置虚拟主机
- objective-c 我的美图软件
- IOS 设备
- OObjective-c 二维码(第三方库ZXing)
- objective-c UIImagePickerController 相册视图控制器
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
- VS2013 C# .net 调试 无法加载符号 断点不命中
- pppd chat 脚本
- 2016-1-5未命名文件
- oracle回顾复习
- 重新理解忽略的for循环i变量