博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS系统方法进行AES对称加密
阅读量:4071 次
发布时间:2019-05-25

本文共 2275 字,大约阅读时间需要 7 分钟。

废话不多说,直接上代码:

头文件:

#import 
@class NSString;@interface NSData (Encryption)- (NSData *)AES256ParmEncryptWithKey:(NSString *)key; //加密- (NSData *)AES256ParmDecryptWithKey:(NSString *)key; //解密@end

.m实现文件:

#import "Encryption.h"#import 
@implementation NSData (Encryption)- (NSData *)AES256ParmEncryptWithKey:(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 *)AES256ParmDecryptWithKey:(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;}

转载地址:http://quwni.baihongyu.com/

你可能感兴趣的文章
xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题
查看>>
十个Flex/Air疑难杂症及解决方案简略
查看>>
Vector3D - AS3
查看>>
球面的纹理映射
查看>>
Flash Builder 找不到所需的 Adobe Flash Player
查看>>
Android开发配置,消除SDK更新时的“https://dl-ssl.google.com refused”异常
查看>>
android调试模拟器启动太慢,怎样才能更快的调试程序呢?
查看>>
AVD横屏,按Ctrl+F11
查看>>
android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
查看>>
dalvik
查看>>
什么是Activity
查看>>
bundle是什么?
查看>>
java 为啥变量名前要加个m?
查看>>
[AS3] 问个很囧的问题: 如何遍历Dictionary?
查看>>
Unity3D面试题汇总
查看>>
AS3声音录音
查看>>
[本人开发的游戏] Discuz网页动物园插件1.0Beta发布!让积分流动起来!
查看>>
Lambda 表达式(C# 编程指南)
查看>>
Flash Builder快捷键
查看>>
flex4的s:states和mx:states的区别
查看>>