iOS的3DES加密写法
来源:互联网 发布:战略家炒股软件 编辑:程序博客网 时间:2024/05/29 08:03
/*
加密
*/
+ (NSString *)encrypt3DES:(NSString *)src key:(NSString *)key{
constvoid *vplainText;
size_t plainTextBufferSize;
NSData* data = [srcdataUsingEncoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)];
plainTextBufferSize = [data length];
vplainText = (constvoid *)[data bytes];
CCCryptorStatus ccStatus;
uint8_t *bufferPtr =NULL;
size_t bufferPtrSize =0;
size_t movedBytes =0;
bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) & ~(kCCBlockSizeDES -1);
bufferPtr = malloc( bufferPtrSize *sizeof(uint8_t));
memset((void *)bufferPtr,0x0, bufferPtrSize);
constvoid *vkey = (constvoid *)[key UTF8String];
ccStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding |kCCOptionECBMode,
vkey,
kCCKeySizeDES,
nil,
vplainText,
plainTextBufferSize,
(void *)bufferPtr,
bufferPtrSize,
&movedBytes);
NSData *myData = [NSDatadataWithBytes:(constvoid *)bufferPtr length:(NSUInteger)movedBytes];
return [selfNSDataToHexString:myData];
}
/*
解密
*/
+ (NSString *)decrypt3DES:(NSString *)src key:(NSString *)key{
constvoid *vplainText;
size_t plainTextBufferSize;
NSData *EncryptData = [selfhexStrToNSData:src];
plainTextBufferSize = [EncryptData length];
vplainText = [EncryptData bytes];
CCCryptorStatus ccStatus;
uint8_t *bufferPtr =NULL;
size_t bufferPtrSize =0;
size_t movedBytes =0;
bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) & ~(kCCBlockSizeDES -1);
bufferPtr = malloc( bufferPtrSize *sizeof(uint8_t));
memset((void *)bufferPtr,0x0, bufferPtrSize);
constvoid *vkey = (constvoid *)[key UTF8String];
ccStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding |kCCOptionECBMode,
vkey,
kCCKeySizeDES,
nil,
vplainText,
plainTextBufferSize,
(void *)bufferPtr,
bufferPtrSize,
&movedBytes);
NSData *dataBuf = [NSDatadataWithBytes:(constvoid *)bufferPtr length:(NSUInteger)movedBytes];
return [[NSStringalloc] initWithData:dataBuf
encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)]
;
}
//十六进制字符串转化为二进制
- (NSData *)hexStrToNSData:(NSString *)hexStr{
NSMutableData* data = [NSMutableDatadata];
for (int i =0; i+2 <= hexStr.length; i+=2) {
NSRange range =NSMakeRange(i, 2);
NSString* ch = [hexStrsubstringWithRange:range];
NSScanner* scanner = [NSScannerscannerWithString:ch];
unsignedint intValue;
[scanner scanHexInt:&intValue];
[data appendBytes:&intValuelength:1];
}
return data;
}
//二进制转化为十六进制
- (NSString *)NSDataToHexString:(NSData *)data{
if (data ==nil) {
returnnil;
}
NSMutableString* hexString = [NSMutableStringstring];
constunsigned char *p = [databytes];
for (int i=0; i < [datalength]; i++) {
[hexString appendFormat:@"%02x", *p++];
}
return [hexStringuppercaseString];
}
- iOS的3DES加密写法
- ios的DES加密
- iOS DES加密与3DES加密
- sunjce iOS des 3des解密加密
- iOS下的DES加密
- iOS DES加密的例子
- iOS下的DES加密
- iOS下的DES加密
- 【iOS】关于DES的加密
- iOS 3DES加密无盐值加密
- des 和 3des 的base64加密
- php、java、android、ios通用的3des加密方法
- iOS 以byte数组作为密钥的3des加密
- ios学习--IOS 3DES加密解密
- iOS下的DES加密问题汇总
- iOS DES加密的方法
- iOS 3DES加密 和 java 3DES 解密
- java的3DES加密
- swift 初始化model的一个注意
- ios学习--TKImageView-可随意定制裁剪样式的iOS工具类
- CSS 布局实例系列(二)如何通过 CSS 实现一个左边固定宽度、右边自适应的两列布局
- h5初识01
- DRY编程原则
- iOS的3DES加密写法
- CUDA aware 编译时遇到的一个问题
- UIView 实现单击和双击的区别
- 二叉查找树解析及其C++实现
- phpcms v9实现修改后台管理登陆路径的简单方法
- JAVA中对List<Map<String,Object>>中的中文汉字进行排序
- 数据库存储树形结构的数据
- hdu 1394 Minimum Inversion Number
- 设计模式练习(7)——桥接模式