iOS下的DES加密问题汇总
来源:互联网 发布:java的关键字 编辑:程序博客网 时间:2024/06/15 04:28
以下是用DES加密会遇到的长见问题:
PS:想看DES加密详解大请到这里:http://bbs.9ria.com/thread-242572-1-1.html
1.关于传参,Objective-C和C,C++一样,不能把值类型数组做为参数,传给另一个方法,方法的返回值的类型也一样不可以是值类型数组。一旦这么做了,接受参数的方法只能获取数组中的首元素。
解决方法是用 NSMutableData 把值类型的数组包一层,代码如下:
复制代码
2.NSData 与 Byte[]之间的转换
复制代码
3.i386架构下定义值类型变量需赋初值
复制代码
PS:想看DES加密详解大请到这里:http://bbs.9ria.com/thread-242572-1-1.html
1.关于传参,Objective-C和C,C++一样,不能把值类型数组做为参数,传给另一个方法,方法的返回值的类型也一样不可以是值类型数组。一旦这么做了,接受参数的方法只能获取数组中的首元素。
解决方法是用 NSMutableData 把值类型的数组包一层,代码如下:
- NSMutableData* bufkeyData = [NSMutableDatadataWithLength:2];
- int* bufkey = bufkeyData.mutableBytes;
- [self make_key:bufkeyData number:j]; // 传参
- int* bufkey = bufkeyData.mutableBytes;// 取值
2.NSData 与 Byte[]之间的转换
- NSData *btsData = [in_str dataUsingEncoding:NSUTF8StringEncoding];
- Byte *byteData = (Byte*)malloc(len);
- memcpy(byteData, [btsData bytes], len);
- NSMutableData *bts2Data = [NSMutableDatadataWithLength:len];
- [bts2Data initWithBytes:byteData length:len];
3.i386架构下定义值类型变量需赋初值
- //下面是头文件赋初值
- // DesEncrypt.h
- // DesEncryptDemo
- //
- // Created by fred yu on 9/2/11.
- // Copyright 2011 __MyCompanyName__. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- enumDesStrategy {
- DesSimple = 1,
- Des3 = 2,
- DesCBC = 3,
- DesTwoKeys = 4
- };
- typedef enum DesStrategy DesStrategy;
- @interface DesEncrypt : NSObject {
- NSMutableArray *keyArray;
- }
- -(NSData *)des:(NSData *)input_data key:(NSString *)key encrypt:(bool)encrypt;
- //Encrypt
- -(NSString*)encrypt:(NSString *)in_str key:(NSString *)key desMode:(DesStrategy)desMode str2:(NSString *)str2;
- //Decrypt
- -(NSString*)decrypt:(NSString *)in_str key:(NSString *)key desMode:(DesStrategy)desMode str2:(NSString *)str2;
- //DesCBC
- -(NSMutableData *)desCBC:(NSMutableData *)input_data key:(NSString *)key_str iv:(NSString *)iv encrypt:(bool)encrypt;
- -(NSMutableData *)des:(NSMutableData *)data key:(NSMutableData *)key iv:(NSMutableData *)iv encrypt:(bool)encrypt;
- //DesCreateKeys
- -(void)desCreateKeys:(NSMutableData *)key;
- //make_data
- -(void)make_data:(NSMutableData *)data number:(int)number;
- //make_key
- -(NSMutableData *)make_key:(NSMutableData *)in_key number:(int)number;
- //handle_data
- -(NSMutableData *)handle_data:(NSMutableData *)data encrypt:(bool)encrypt;
- //change_data
- -(NSMutableData *)change_data:(NSMutableData *)olddata change_tbType:(int)change_tbType;
- @end
- 测试代码及输出结果:
- #import <Foundation/Foundation.h>
- #import "DesEncrypt.h"
- int main (int argc, const char * argv[]) {
- NSAutoreleasePool * pool = [[NSAutoreleasePoolalloc] init];
- // insert code here...
- DesEncrypt * desEncrypt = [[DesEncrypt alloc] init];
- NSString *key1 = @"23245321";
- NSString *key2 = @"77585210";
- NSString *msg = @"abcdefghijk";
- NSLog(@"消息: %@",msg);
- NSString *s = [desEncrypt encrypt:msg key:key1 desMode:DesCBC str2:key2];
- NSLog(@"经过加密处理: %@",s);
- NSString *ss = [desEncrypt decrypt:s key:key1 desMode:DesCBC str2:key2];
- NSLog(@"经过解密处理: %@",ss);
- [pool drain];
- return 0;
- }
结果:
fred-yus-MacBook-Pro:~ fred$ /Users/fred/Documents/DesEncryptDemo/build/Debug/DesEncryptDemo ; exit;
2011-09-05 13:05:08.552 DesEncryptDemo[6085:903] 消息: abcdefghijk
2011-09-05 13:05:08.555 DesEncryptDemo[6085:903] 经过加密处理: vL5Am3KcszqpJdB594OrkA==
2011-09-05 13:05:08.555 DesEncryptDemo[6085:903] 经过解密处理: abcdefghijk
logout
原文地址:http://bbs.9ria.com/thread-242599-1-1.html
- iOS下的DES加密问题汇总
- iOS下的DES加密
- iOS下的DES加密
- iOS下的DES加密
- ios的DES加密
- iOS DES加密的例子
- 【iOS】关于DES的加密
- linux下的DES加密
- java 下的 des加密/3des加密 示例
- (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题
- iOS的3DES加密写法
- iOS DES加密的方法
- iOS DES加密与3DES加密
- ios des加密
- ios des加密
- DES加密和解密遇到的问题
- iOS、后台、Android 三个一致的加密工具 ---------DES加密
- Des 加密处理 iOS 和 安卓 与服务器 处理时 遇到的 补位问题
- nyoj-91-阶乘之和
- JS知识点积累
- 用图片来搜索 教你玩转Google按图搜索
- 《快公司》杂志:小众社交网络正在崛起
- 汉诺塔问题
- iOS下的DES加密问题汇总
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
- 在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置
- LINUX TSC
- Android系统自带的文字外观设置及实际显示效果图
- 关于xmlns
- android笔记【四】
- SVM入门(五)线性分类器的求解——问题的描述Part2
- UIColor使用——16进制数颜色转换成RGB颜色