iOS DES加密

作者: J_HX | 来源:发表于2017-01-20 16:49 被阅读195次
  • NSString分类创建
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方法加密
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 加密

    iOS 时间戳 + DES 加密 时间戳 DES 加密解密 加密内容:helloWorldDES加密成功加密结果:...

  • 面试题总结

    1. iOS开发中的加密方式 iOS加密相关算法框架:CommonCrypto。 对称加密: DES、3DES、A...

  • DES加密 解密 java和iOS 保持一致

    1.java/android DES加密解密 base64编码用的jdk1.8 2.iOS DES加密解密

  • IOS的签名机制

    前言 了解IOS的数字签名机制之前我们需要掌握以下几个知识:加密解密(对称加密(DES 3DES AES),非对称...

  • Android Des/3DES加解密

    1、3DES加解密 DES加密分为 单DES和 3DES加密 单DES加密是8个字节长度加密 3DES加密分为:双...

  • Laravel 3DES (php、java、android、i

    Laravel 3DES Laravel 3DES加密解密,和java,ios互通 安装方法 配置方法 app.p...

  • iOS DES加密

    NSString分类创建 DES 宏定义key 加密 解密 在这里介绍一个三方工具 非常简单导入通过GTMBa...

  • ios des加密

    前言 des加密做的时候后端前端ios和安卓三端需统一 1、DES加密有两种模式,ECB和CBC。还有就是填充模式...

  • iOS常用加解密方式

    AES128 AES128加密 AES128解密 3DES 3DES加密 3DES解密 DES DES加密 DES解密

  • iOS 签名机制

    前言 学习iOS签名机制,可参考如下学习路线: 加密解密(对称DES 3DES AES、非对称RSA)--->单向...

网友评论

    本文标题:iOS DES加密

    本文链接:https://www.haomeiwen.com/subject/ezzwbttx.html