DES 加密后转16进制输出

来源:互联网 发布:mate7电信没有4g 网络 编辑:程序博客网 时间:2024/05/22 14:23



+ (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key

{

   NSString *ciphertext = nil;

   const char *textBytes = [plainTextUTF8String];

   size_t dataLength = [plainText length];

    //==================

    

   uint8_t *bufferPtr = NULL;

   size_t bufferPtrSize = 0;

   size_t movedBytes = 0;

    

    bufferPtrSize = (dataLength +kCCBlockSizeDES) & ~(kCCBlockSizeDES -1);

    bufferPtr =malloc( bufferPtrSize * sizeof(uint8_t));

   memset((void *)bufferPtr,0x0, bufferPtrSize);


    

   NSString *testString = @"f7afc629";

    NSData *testData = [testStringdataUsingEncoding: NSUTF8StringEncoding];

   Byte *iv = (Byte *)[testDatabytes];

     

 

    CCCryptorStatus cryptStatus =CCCrypt(kCCEncrypt,kCCAlgorithmDES,

                                         kCCOptionPKCS7Padding,

                                          iv,kCCKeySizeDES,

                                          iv,

                                          textBytes, dataLength,

                                          (void *)bufferPtr, bufferPtrSize,

                                          &movedBytes);

   if (cryptStatus == kCCSuccess) {

     //   NSData *data = [NSData dataWithBytes:(void *)bufferPtr length:(NSUInteger)movedBytes];

        

    /*

        //============================test=========

        

        NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);

        NSString *new=[[NSString alloc]initWithData:data encoding:enc];

        

        //===================================================

      */

       // char *testbyte=(char *)[data bytes];

        //NSData *dd = [NSData dataWithBytes:textBytes length:(NSInteger)movedBytes];

     //   NSLog(@"%x",[data bytes]);

      //  int t = sizeof(testbyte);

        

        ciphertext= [desparseByte2HexString:bufferPtr :movedBytes];

  

        

   NSLog(@"ciphertext==%@",ciphertext);

        

    

    }

    ciphertext=[ciphertextuppercaseString];

    

    

   return ciphertext ;

}


+(NSString *) parseByte2HexString:(Byte *) bytes  :(int)len{

    

   NSString *hexStr = @"";

    

   if(bytes)

    {

       for(int i=0;i<len;i++)

        {

           NSString *newHexStr = [NSStringstringWithFormat:@"%x",bytes[i]&0xff];///16进制数

           if([newHexStr length]==1)

                hexStr = [NSStringstringWithFormat:@"%@0%@",hexStr,newHexStr];

           else

                hexStr = [NSStringstringWithFormat:@"%@%@",hexStr,newHexStr];

        }

    }

    

    

    

    

    NSLog(@"bytes16进制数为:%@",hexStr);

   return hexStr;

}


0 0
原创粉丝点击