iOS DES加密

  • NSString分类创建
iOS DES加密_第1张图片
Paste_Image.png
  • DES 宏定义key
#define key @"key"
  • 加密
/**
 * 加密
 */
+ (NSString *) encryptUseDESa:(NSString *)clearText
{
    NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    unsigned char buffer[1024];
    memset(buffer, 0, sizeof(char));
    size_t numBytesEncrypted = 0;
    
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                          kCCAlgorithmDES,
                                          kCCOptionPKCS7Padding | kCCOptionECBMode,
                                          [key UTF8String],
                                          kCCKeySizeDES,
                                          nil,
                                          [data bytes],
                                          [data length],
                                          buffer,
                                          1024,
                                          &numBytesEncrypted);
    
    NSString* plainText = nil;
    if (cryptStatus == kCCSuccess) {
        NSData *dataTemp = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
        plainText = [dataTemp base64EncodedStringWithOptions:0];
//        plainText = [self encodeString:plainText];
    }else{
        //        NSLog(@"DES加密失败");
    }
    return plainText;
}
  • 解密
+ (NSString*)encodeString:(NSString*)unencodedString{
    
    // CharactersToBeEscaped = @":/?&=;+!@#$()~',*";
    // CharactersToLeaveUnescaped = @"[].";
    NSCharacterSet *c = [NSCharacterSet characterSetWithCharactersInString:@"'();:@&=+$,/?%#[]"];
    [unencodedString stringByAddingPercentEncodingWithAllowedCharacters:c];
    NSString *encodedString = (NSString *)
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              (CFStringRef)unencodedString,
                                                              NULL,
                                                              (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                              kCFStringEncodingUTF8));
    
    return encodedString;
}

  • 在这里介绍一个三方工具
Paste_Image.png
  • 非常简单导入通过GTMBase64进行解密
#import "GTMBase64.h"

DES 加密后进行urlEncode加密

+ (NSString*)encodeString:(NSString*)unencodedString{
   
   // CharactersToBeEscaped = @":/?&=;+!@#$()~',*";
   // CharactersToLeaveUnescaped = @"[].";
   NSCharacterSet *c = [NSCharacterSet characterSetWithCharactersInString:@"'();:@&=+$,/?%#[]"];
   [unencodedString stringByAddingPercentEncodingWithAllowedCharacters:c];
   NSString *encodedString = (NSString *)
   CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                             (CFStringRef)unencodedString,
                                                             NULL,
                                                             (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                             kCFStringEncodingUTF8));
   
   return encodedString;
}

  • 在这里调用urlEncode方法加密
iOS DES加密_第2张图片
Paste_Image.png

将DES加密后转化16进制数

+ (NSString *)dataTohexString:(NSData*)data
{
    Byte *bytes = (Byte *)[data bytes];
    NSString *hexStr = @"";
    for(int i = 0;i < [data length];i++)
    {
        NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];//16进制数
        if([newHexStr length]==1)
            hexStr = [NSString  stringWithFormat:@"%@0%@",hexStr,newHexStr];
        else
            hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
    }
    return hexStr;
}

你可能感兴趣的:(iOS DES加密)