iOS下的DES加密

转载 2016年08月29日 09:53:35

今天终于把iOS平台下的DES加密算法调通了,在这里记录一下。说一下我遇到的问题吧。    


  第一,关于传参,Objective-C和C,C++一样,不能把值类型数组做为参数,传给另一个方法,方法的返回值的类型也一样不可以是值类型数组。一旦这么做了,接受参数的方法只能获取数组中的首元素。    


       解决方法是用 NSMutableData 把值类型的数组包一层,代码如下:    


      NSMutableData* bufkeyData = [NSMutableDatadataWithLength:2];

       int* bufkey = bufkeyData.mutableBytes;    


 

        传参     [self make_key:bufkeyData number:j];                     取值    int* bufkey = bufkeyData.mutableBytes;       



  第二,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];  


 

  第三,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 = [[NSAutoreleasePoolallocinit];

 

    // insert code here...

 

    DesEncrypt * desEncrypt = [[DesEncrypt allocinit];

 

   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    


 
   有兴趣的朋友可以加我QQ:830911

相关文章推荐

IOS des加密 demo

  • 2015年06月11日 14:35
  • 167KB
  • 下载

iOS一行代码进行RSA、DES 、AES、MD5加密、解密

本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e...

iOS des加密

  • 2016年01月18日 11:55
  • 71KB
  • 下载

des加密java-ios.zip

  • 2014年10月12日 10:27
  • 169KB
  • 下载

IOS成长之路-DES+Base64 加密、解密

DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密 3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使...

iOS des加密转码16进制字符串

iOS des加密转码16进制字符串

IOS-plist文件DES加密

公司PM担心题目泄露,所以要我们给plist文件加密,这下可把我搞残了,因为我从来没搞过加密,网上查了很多资料,都是简单的字符串加密,没有专门对plist文件加密,后来实在没办法,请教了公司里的大神,...

iOS将字符串3DES加密后转Base64

为NSString写分类 NSString+Base64After3DES .h文件 #import #import @interface NSString (Base64After3DES)...

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

加密的Demo 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android、iOS),在处理iOS的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS下的DES加密
举报原因:
原因补充:

(最多只允许输入30个字)