DES+Base64 加密解密的方法
来源:互联网 发布:不想学英语知乎 编辑:程序博客网 时间:2024/05/17 05:03
为了保护存储文件不被无聊的吊丝破解,对存储文件里一些明感数据加密还是必须的。
之前自己参考资料写了个Base64,没调试通,死于胎腹。之后在网上找到个GTMBase64,Google Toolbox for Mac。
EncryptUtil.h
//// EncryptUtil.h//// Created by Wu Kurodo on 12-6-27.// Copyright (c) 2012年 Kurodo Inc. All rights reserved.//#import <Foundation/Foundation.h>@interface EncryptUtil : NSObject+ (NSString *)encryptWithText:(NSString *)sText;+ (NSString *)decryptWithText:(NSString *)sText;@end
EncryptUtil.m
//// EncryptUtil.m//// Created by Wu Kurodo on 12-6-27.// Copyright (c) 2012年 Kurodo Inc. All rights reserved.//#import "EncryptUtil.h"#import <CommonCrypto/CommonCryptor.h>#import "GTMBase64.h"@implementation EncryptUtil+ (NSString *)encrypt:(NSString *)sText encryptOrDecrypt:(CCOperation)encryptOperation key:(NSString *)key{ const void *vplainText; size_t plainTextBufferSize; if (encryptOperation == kCCDecrypt) { NSData *decryptData = [GTMBase64 decodeData:[sText dataUsingEncoding:NSUTF8StringEncoding]]; plainTextBufferSize = [decryptData length]; vplainText = [decryptData bytes]; } else { NSData* encryptData = [sText dataUsingEncoding:NSUTF8StringEncoding]; plainTextBufferSize = [encryptData length]; vplainText = (const void *)[encryptData bytes]; } CCCryptorStatus ccStatus; uint8_t *bufferPtr = NULL; size_t bufferPtrSize = 0; size_t movedBytes = 0; bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1); bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t)); memset((void *)bufferPtr, 0x0, bufferPtrSize); NSString *initVec = @"init Kurodo"; const void *vkey = (const void *) [key UTF8String]; const void *vinitVec = (const void *) [initVec UTF8String]; ccStatus = CCCrypt(encryptOperation, kCCAlgorithm3DES, kCCOptionPKCS7Padding, vkey, kCCKeySize3DES, vinitVec, vplainText, plainTextBufferSize, (void *)bufferPtr, bufferPtrSize, &movedBytes); NSString *result = nil; if (encryptOperation == kCCDecrypt) { result = [[[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding] autorelease]; } else { NSData *data = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes]; result = [GTMBase64 stringByEncodingData:data]; } return result;}+ (NSString *)encryptWithText:(NSString *)sText{ return [self encrypt:sText encryptOrDecrypt:kCCEncrypt key:@"Kurodo"];}+ (NSString *)decryptWithText:(NSString *)sText{ return [self encrypt:sText encryptOrDecrypt:kCCDecrypt key:@"Kurodo"];}@end
0 0
- DES+Base64 加密解密的方法
- DES+Base64 加密解密的方法
- 3DES+Base64 加密解密的方法
- 3DES+Base64 加密解密的方法
- DES+Base64 加密、解密
- iPhone中3DES+Base64 加密解密的代码
- DES+Base64 加密、解密详情
- iOS DES+Base64 加密、解密
- DES、AES加密解密的方法
- 使用DES加密和解密的方法
- ios开发之DES+Base64 加密、解密
- ios 加密解密(包括base64,DES)
- IOS 加密解密(AES、DES、base64、md5)
- DES和Base64加密解密类
- DES的加密解密
- base64的加密解密
- Base64的加密解密
- C# 加密解密(DES,3DES,MD5,Base64) 类
- zip压缩加密解密的开源工具包zip4j
- int (*a)[10] 和 int *a[10]d的区别
- Android 游戏教程:让人物动起来
- 南阳49开心的小明
- SharePoint 2013 中代码创建列表查阅项字段
- DES+Base64 加密解密的方法
- LeetCode之 Reorder List解决思路
- C++面向对象程序设计中类的总结
- spring 版本冲突 2.5.6
- 王易见新浪SHOW开讲------余额宝真的安全吗?
- 列表视图控件List Control以及CListCtrl类
- 矩形类定义
- linux下gcc安装
- HDU 1443 Joseph 约瑟夫环问题