//需要导入   #import <CommonCrypto/CommonCryptor.h>

==============MD5加密============

NSString *str = @"加密的内容";

//转换成C语言的字符串

const char *cStr=[str UTF8String];

//MD5加密的结果是128位,需要开辟一个16字节的空间

unsigned char result[16];

//调用加密函数

CC_MD5(cStr, (unsigned int)strlen(cStr), result);

//通过上面这个方法获取的MD5是一个16个字符的数组,需要转换成32位的MD5值

NSMutableString *string = [NSMutableString stringWithCapacity:10];

for (int i=; i<16; i++) {

[string appendString:[NSString stringWithFormat:@"%02x",result[i]]];

}

NSLog(@"MD5加密:%@",string);

===============base64加密解密=============

//ios7 以后提供了base64的转码方式

//加密

NSString *pass=@"加密的内容";

NSData *passData=[pass dataUsingEncoding:NSUTF8StringEncoding];

NSString *result = [passData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

NSLog(@"base64加密:%@",result);

//解密

NSData *decodeData = [[NSData alloc]initWithBase64EncodedString:result options:];

NSString *decodeStr = [[NSString alloc]initWithData:decodeData encoding:NSUTF8StringEncoding];

NSLog(@"base64解密:%@",decodeStr);

================AES加密解密===============

//新建一个NSData类,写入一下两个方法

//加密方法

- (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    = ;

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    = ;

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;

在另外的类里面调用上面NSData里面的方法

//==========AES加密解密=============

NSString *key = @"mykey";//钥匙

NSString *secret = @"加密内容";//准备加密的内容

NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];

NSData *ciper = [plain AES256EncryptWithKey:key];

NSLog(@"AES加密%@",ciper);

//解密

plain = [ciper AES256DecryptWithKey:key];

NSLog(@"AES解密:%@",[[NSString alloc]initWithData:plain encoding:NSUTF8StringEncoding]);

最新文章

  1. WebKit中的Chrome 和 ChromeClient
  2. .NET ORM 哪家强
  3. 配置struts tags 输出HTML
  4. linkscrpit
  5. (java)从零开始之-反射Reflect
  6. js 执行一个字符串类型的函数
  7. moodle其他代码
  8. DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate Date Dimension)
  9. java 文件读和写(整理)
  10. [转] 关于VS中区分debug与release,32位与64位编译的宏定义
  11. bootstrap表格添加按钮、模态框实现
  12. Liunx系统升级自带的Python版本
  13. ORA-00984: 列在此处不允许 SQL parse error location
  14. 洗礼灵魂,修炼python(85)-- 知识拾遗篇 —— 深度剖析让人幽怨的编码
  15. HDU--1540 Tunnel Warfare(线段树区间更新)
  16. js 创建对象的几种方法
  17. phpcms v9不限模型全站搜索
  18. lua源代码学习(一)lua的c api外围实现
  19. struts2.1.6 action 01
  20. Python条件判断if、for、while

热门文章

  1. ASP.NET MVC5 网站开发实践(二) Member区域&ndash;我的咨询列表及添加咨询
  2. ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章
  3. Openfire/XMPP学习之——Openfire的安装、配置
  4. vue+node开发手机端h5页面开发遇到的坑
  5. HTTP在.NET中的一些应用和解析
  6. 与类相关基本概念----Beginning Visual C#
  7. Android系统build.prop文件
  8. [无聊的事-连载之连开100个VS] 折腾你的骚机吧,骚年们!!!
  9. C# 关键字extern用法
  10. .net winform的IsMdiContainer属性