IOS之DES加解密
2015-10-14 11:28
417 查看
ios使用加密方式的地方:主要是在HTTP数据传输.那么另一端就是server了.
server的代码,现在一般是java写的
IOS代码
注意:
CCCrypt(CCOperation op, CCAlgorithm alg, CCOptions options,constvoid *key, size_t keyLength,constvoid
*iv,constvoid *dataIn, size_t dataInLength,void *dataOut, size_t dataOutAvailable, size_t *dataOutMoved)
这个方法中,iv向量 我们设置的null. 如何使用这个方法主要是看服务端的解密代码怎么写的.
一般情况下,java代码都会转成16进制字符串
下面附上data转16进制字符串的方法
未完待续...
server的代码,现在一般是java写的
IOS代码
#import <CommonCrypto/CommonCryptor.h> /****************************************************************************** 函数名称 : + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key 函数描述 : 文本数据进行DES加密 输入参数 : (NSData *)data (NSString *)key 输出参数 : N/A 返回参数 : (NSData *) 备注信息 : 此函数不可用于过长文本 ******************************************************************************/ + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key { char keyPtr[kCCKeySizeAES256+1]; bzero(keyPtr, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [data length]; size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding | kCCOptionECBMode, keyPtr, kCCBlockSizeDES, NULL, [data bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; } free(buffer); return nil; }
注意:
CCCrypt(CCOperation op, CCAlgorithm alg, CCOptions options,constvoid *key, size_t keyLength,constvoid
*iv,constvoid *dataIn, size_t dataInLength,void *dataOut, size_t dataOutAvailable, size_t *dataOutMoved)
这个方法中,iv向量 我们设置的null. 如何使用这个方法主要是看服务端的解密代码怎么写的.
NSData *data = [WDCrypto DESEncrypt:[string dataUsingEncoding:NSUTF8StringEncoding] WithKey:@"abcd"]; //转换成16进制字符串 NSString *encodeString = [WDCrypto hexStringFromData:data];
一般情况下,java代码都会转成16进制字符串
下面附上data转16进制字符串的方法
+(NSString *)hexStringFromData:(NSData *)data{ Byte *bytes = (Byte *)[data bytes]; //下面是Byte 转换为16进制。 NSMutableString *hexStr = [NSMutableString string]; for(int i=0;i<[data length];i++){ NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数 if([newHexStr length]==1){ [hexStr appendFormat:@"0%@",newHexStr]; }else{ [hexStr appendFormat:@"%@",newHexStr]; } } return hexStr; }
未完待续...
相关文章推荐
- iOS 十六进制的相加取反
- 2015-10-14 iOS获取最新设备型号方法
- iOS 合并framework的方法
- iOS中读取照片库
- 制作iOS推送-Step by step
- iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试
- ios修改status bar颜色及xcode7下日志出现CGContextSaveGState: invalid context 0x0错误
- iOS开发 手势滑动返回功能
- 收藏一个IOS好东西的链接
- iOS原生开发获取当前设备日期与时间
- iOS应用之间的跳转和数据传
- IOS9提示“不受信任的开发者”如何处理
- 非常强大的射击动作游戏iOS源码
- 非常强大的射击动作游戏iOS源码
- iOS Push Notification注意事项
- iOS 多线程编程
- iOS数据持久化方式分析
- IOS中如何获取手机的当前IP
- iOS---倒计时
- iOS BUG整理-Data argument not used by format string的警告处理