iOS使用DES加解密

这里使用框架提供的des加解密库: 首先引入头文件 #import <CommonCrypto/CommonCryptor.h>

主要的加解密函数如下:

 
 
/*字符串加密
 *参数
 *plainText : 加密明文
 *key        : 密钥 64位
 */
+   ( NSString   * )   encryptUseDES : ( NSString   * ) plainText   key : ( NSString   * ) key
{
     NSString   * ciphertext   =   nil ;
     const   char   * textBytes   =   [ plainText   UTF8String ] ;
     NSUInteger   dataLength   =   [ plainText   length ] ;
     unsigned   char   buffer [ 1024 ] ;
     memset ( buffer ,   0 ,   sizeof ( char ) ) ;
     Byte   iv [ ]   =   { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } ;
     size_t   numBytesEncrypted   =   0 ;
     CCCryptorStatus   cryptStatus   =   CCCrypt ( kCCEncrypt ,   kCCAlgorithmDES ,
                                           kCCOptionPKCS7Padding ,
                                           [ key   UTF8String ] ,   kCCKeySizeDES ,
                                           iv ,
                                           textBytes ,   dataLength ,
                                           buffer ,   1024 ,
                                           & numBytesEncrypted ) ;
     if   ( cryptStatus   = =   kCCSuccess )   {
         NSData   * data   =   [ NSData   dataWithBytes : buffer   length : ( NSUInteger ) numBytesEncrypted ] ;
        
         ciphertext   =   [ [ [ NSString   alloc ]   initWithData : [ GTMBase64   encodeData : data ]   encoding : NSUTF8StringEncoding ]   autorelease ] ;
     }
     return   ciphertext ;
}
 
//解密
+   ( NSString   * )   decryptUseDES : ( NSString * ) cipherText   key : ( NSString * ) key  
{
     NSData *   cipherData   =   [ GTMBase64   decodeString : cipherText ] ;
     unsigned   char   buffer [ 1024 ] ;
     memset ( buffer ,   0 ,   sizeof ( char ) ) ;
     size_t   numBytesDecrypted   =   0 ;
     Byte   iv [ ]   =   { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } ;
     CCCryptorStatus   cryptStatus   =   CCCrypt ( kCCDecrypt ,  
                                           kCCAlgorithmDES ,  
                                           kCCOptionPKCS7Padding ,  
                                           [ key   UTF8String ] ,  
                                           kCCKeySizeDES ,  
                                           iv ,  
                                           [ cipherData   bytes ] ,  
                                           [ cipherData   length ] ,  
                                           buffer ,  
                                           1024 ,  
                                           & numBytesDecrypted ) ;
     NSString *   plainText   =   nil ;
     if   ( cryptStatus   = =   kCCSuccess )   {
         NSData *   data   =   [ NSData   dataWithBytes : buffer   length : ( NSUInteger ) numBytesDecrypted ] ;
         plainText   =   [ [ [ NSString   alloc ]   initWithData : data   encoding : NSUTF8StringEncoding ]   autorelease ] ;
     }
     return   plainText ;
}

注:函数中使用到了Base64的编解码,请到下面地址中下载相应库
http://www.jguoer.com/blog/wp-content/uploads/2010/1/base64.zip


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值