iOS开发-Objective-c的AES加密和解密算法的实现
来源:互联网 发布:数据采集与处理官网 编辑:程序博客网 时间:2024/06/04 11:59
话不多说,直接上代码
.h
import <Foundation/Foundation.h>
@interface LanAES : NSObject
+(NSData *)AES256ParmEncryptWithKey:(NSString *)key Encrypttext:(NSData *)text; //加密
+(NSData *)AES256ParmDecryptWithKey:(NSString *)key Decrypttext:(NSData *)text; //解密
+(NSString *) aes256_encrypt:(NSString *)key Encrypttext:(NSString *)text;
+(NSString *) aes256_decrypt:(NSString *)key Decrypttext:(NSString *)text;
@end
.m
#import "LanAES.h"
#import <CommonCrypto/CommonCryptor.h>
@implementation LanAES
+(NSData *)AES256ParmEncryptWithKey:(NSString *)key Encrypttext:(NSData *)text //加密
{
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [text length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus =CCCrypt(kCCEncrypt,kCCAlgorithmAES128,
kCCOptionPKCS7Padding |kCCOptionECBMode,
keyPtr, kCCBlockSizeAES128,
NULL,
[text bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
return [NSDatadataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
+ (NSData *)AES256ParmDecryptWithKey:(NSString *)key Decrypttext:(NSData *)text //解密
{
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [text length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus =CCCrypt(kCCDecrypt,kCCAlgorithmAES128,
kCCOptionPKCS7Padding |kCCOptionECBMode,
keyPtr, kCCBlockSizeAES128,
NULL,
[text bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
return [NSDatadataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
+(NSString *) aes256_encrypt:(NSString *)key Encrypttext:(NSString *)text
{
constchar *cstr = [textcStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSDatadataWithBytes:cstr length:text.length];
//对数据进行加密
NSData *result = [LanAESAES256ParmEncryptWithKey:key Encrypttext:data];
//转换为2进制字符串
if (result && result.length >0) {
Byte *datas = (Byte*)[resultbytes];
NSMutableString *output = [NSMutableStringstringWithCapacity:result.length *2];
for(int i =0; i < result.length; i++){
[output appendFormat:@"%02x", datas[i]];
}
return output;
}
return nil;
}
+(NSString *) aes256_decrypt:(NSString *)key Decrypttext:(NSString *)text
{
//转换为2进制Data
NSMutableData *data = [NSMutableDatadataWithCapacity:text.length /2];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [textlength] / 2; i++) {
byte_chars[0] = [text characterAtIndex:i*2];
byte_chars[1] = [text characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, 16);
[data appendBytes:&whole_byte length:1];
}
//对数据进行解密
NSData* result = [LanAES AES256ParmDecryptWithKey:key Decrypttext:data];
if (result && result.length >0) {
return [[NSStringalloc] initWithData:resultencoding:NSUTF8StringEncoding];
}
return nil;
}
结果测试
- iOS开发之Objective-c的AES加密和解密算法的实现
- iOS开发-Objective-c的AES加密和解密算法的实现
- iOS开发之Objective-c的AES加密和解密算法的实现
- iOS开发之Objective-c的AES加密和解密算法的实现
- AES加密解密算法的C代码实现
- AES加密解密算法的C代码实现
- JAVA实现AES的加密和解密算法
- AES加密解密算法的Java实现
- iOS AES的加密解密
- iOS AES的加密解密
- C语言实现AES算法加密/解密算法---以前写的,整理下
- java实现对称加密AES和DES的加密、解密
- AES加密解密算法的FPGA实现(一)
- AES加密解密算法的FPGA实现(二)
- 使用AES算法完成对数据的加密和解密
- iOS AES加密解密的使用
- iOS开发之Objective-c的加密的实现
- PHP的AES/RSA加密解密算法
- knockoutjs介绍
- iOS MP3 id3lib
- Android stuido的使用 -- 取消拼写检查
- C++大数类
- Linux下安装Nginx详细图解教程
- iOS开发-Objective-c的AES加密和解密算法的实现
- Ant之Project
- 安卓按home键之后,再次点击程序图标避免再次重新启动程序解决办法
- Android——客户端日期定制显示
- 配色速成指导
- opencv 从内存加载图像
- 赛马问题
- RMAN实战1:RMAN备份数据库、控制文件、参数文件、FRA、归档日志
- android 通过Build获取手机硬件信息