亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS base64 加密解密 通用類實例代碼

2020-07-26 02:35:29
字體:
來源:轉載
供稿:網友

在使用過程中,直接將被類引入到項目中即可,不需要其它輔助類。

使用示例:  將此通用類的頭文件引入到目標類后,直接使用類名進行調用即可。

NSString *str = [NSString stringWithFormat:@"YWE="];   NSString *str1 = [NSString stringWithFormat:@"aa"];   NSLog(@"resultStr========%@",[CommonFunc textFromBase64String:str]);  //使用類名進行調用   NSLog(@"resultStr=========%@",[CommonFunc base64StringFromText:str1]); //使用類名進行調用 

源碼下載:

在項目中遇到字符串的base64編解碼,分享一下工具類:

JKCommonFunc.h

#define __BASE64( text )    [CommonFunc base64StringFromText:text] #define __TEXT( base64 )    [CommonFunc textFromBase64String:base64] #import <Foundation/Foundation.h> @interface JKCommonFunc : NSObject /******************************************************************************  函數名稱 : + (NSString *)base64StringFromText:(NSString *)text  函數描述 : 將文本轉換為base64格式字符串  輸入參數 : (NSString *)text  文本  輸出參數 : N/A  返回參數 : (NSString *)  base64格式字符串  備注信息 :  ******************************************************************************/ + (NSString *)base64StringFromText:(NSString *)text; /******************************************************************************  函數名稱 : + (NSString *)textFromBase64String:(NSString *)base64  函數描述 : 將base64格式字符串轉換為文本  輸入參數 : (NSString *)base64 base64格式字符串  輸出參數 : N/A  返回參數 : (NSString *)  文本  備注信息 :  ******************************************************************************/ + (NSString *)textFromBase64String:(NSString *)base64; @end 

JKCommonFunc.m

#import "CommonFunc.h"    //引入IOS自帶密碼庫  #import <CommonCrypto/CommonCryptor.h>  //空字符串  #define   LocalStr_None      @""  static const char encodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";  @implementation CommonFunc  + (NSString *)base64StringFromText:(NSString *)text  {    if (text && ![text isEqualToString:LocalStr_None]) {      //取項目的bundleIdentifier作為KEY 改動了此處     //NSString *key = [[NSBundle mainBundle] bundleIdentifier];      NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];      //IOS 自帶DES加密 Begin 改動了此處     //data = [self DESEncrypt:data WithKey:key];      //IOS 自帶DES加密 End      return [self base64EncodedStringFrom:data];    }    else {      return LocalStr_None;    }  }  + (NSString *)textFromBase64String:(NSString *)base64  {    if (base64 && ![base64 isEqualToString:LocalStr_None]) {      //取項目的bundleIdentifier作為KEY  改動了此處     //NSString *key = [[NSBundle mainBundle] bundleIdentifier];      NSData *data = [self dataWithBase64EncodedString:base64];      //IOS 自帶DES解密 Begin  改動了此處     //data = [self DESDecrypt:data WithKey:key];       //IOS 自帶DES加密 End      return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];    }    else {      return LocalStr_None;    }  }  /******************************************************************************  函數名稱 : + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key  函數描述 : 文本數據進行DES加密  輸入參數 : (NSData *)data        (NSString *)key  輸出參數 : N/A  返回參數 : (NSData *)  備注信息 : 此函數不可用于過長文本  ******************************************************************************/  + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key  {    char keyPtr[kCCKeySizeAES256+1];    bzero(keyPtr, sizeof(keyPtr));    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];    NSUInteger dataLength = [data length];    size_t bufferSize = dataLength + kCCBlockSizeAES128;    voidvoid *buffer = malloc(bufferSize);    size_t numBytesEncrypted = 0;    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,                       kCCOptionPKCS7Padding | kCCOptionECBMode,                       keyPtr, kCCBlockSizeDES,                       NULL,                       [data bytes], dataLength,                       buffer, bufferSize,                       &numBytesEncrypted);    if (cryptStatus == kCCSuccess) {      return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];    }    free(buffer);    return nil;  }  /******************************************************************************  函數名稱 : + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key  函數描述 : 文本數據進行DES解密  輸入參數 : (NSData *)data      (NSString *)key  輸出參數 : N/A  返回參數 : (NSData *)  備注信息 : 此函數不可用于過長文本  ******************************************************************************/  + (NSData *)DESDecrypt:(NSData *)data WithKey:(NSString *)key  {    char keyPtr[kCCKeySizeAES256+1];    bzero(keyPtr, sizeof(keyPtr));    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];    NSUInteger dataLength = [data length];    size_t bufferSize = dataLength + kCCBlockSizeAES128;    voidvoid *buffer = malloc(bufferSize);    size_t numBytesDecrypted = 0;    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES,                       kCCOptionPKCS7Padding | kCCOptionECBMode,                       keyPtr, kCCBlockSizeDES,                       NULL,                       [data bytes], dataLength,                       buffer, bufferSize,                       &numBytesDecrypted);    if (cryptStatus == kCCSuccess) {      return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];    }    free(buffer);    return nil;  }  /******************************************************************************  函數名稱 : + (NSData *)dataWithBase64EncodedString:(NSString *)string  函數描述 : base64格式字符串轉換為文本數據  輸入參數 : (NSString *)string  輸出參數 : N/A  返回參數 : (NSData *)  備注信息 :  ******************************************************************************/  + (NSData *)dataWithBase64EncodedString:(NSString *)string  {    if (string == nil)      [NSException raise:NSInvalidArgumentException format:nil];    if ([string length] == 0)      return [NSData data];    static charchar *decodingTable = NULL;    if (decodingTable == NULL)    {      decodingTable = malloc(256);      if (decodingTable == NULL)        return nil;      memset(decodingTable, CHAR_MAX, 256);      NSUInteger i;      for (i = 0; i < 64; i++)        decodingTable[(short)encodingTable[i]] = i;    }    const charchar *characters = [string cStringUsingEncoding:NSASCIIStringEncoding];    if (characters == NULL)   // Not an ASCII string!      return nil;    charchar *bytes = malloc((([string length] + 3) / 4) * 3);    if (bytes == NULL)      return nil;    NSUInteger length = 0;    NSUInteger i = 0;    while (YES)    {      char buffer[4];      short bufferLength;      for (bufferLength = 0; bufferLength < 4; i++)      {        if (characters[i] == '/0')          break;        if (isspace(characters[i]) || characters[i] == '=')          continue;        buffer[bufferLength] = decodingTable[(short)characters[i]];        if (buffer[bufferLength++] == CHAR_MAX)   // Illegal character!        {          free(bytes);          return nil;        }      }      if (bufferLength == 0)        break;      if (bufferLength == 1)   // At least two characters are needed to produce one byte!      {        free(bytes);        return nil;      }      // Decode the characters in the buffer to bytes.      bytes[length++] = (buffer[0] << 2) | (buffer[1] >> 4);      if (bufferLength > 2)        bytes[length++] = (buffer[1] << 4) | (buffer[2] >> 2);      if (bufferLength > 3)        bytes[length++] = (buffer[2] << 6) | buffer[3];    }    bytes = realloc(bytes, length);    return [NSData dataWithBytesNoCopy:bytes length:length];  }  /******************************************************************************  函數名稱 : + (NSString *)base64EncodedStringFrom:(NSData *)data  函數描述 : 文本數據轉換為base64格式字符串  輸入參數 : (NSData *)data  輸出參數 : N/A  返回參數 : (NSString *)  備注信息 :   ******************************************************************************/  + (NSString *)base64EncodedStringFrom:(NSData *)data  {    if ([data length] == 0)      return @"";    charchar *characters = malloc((([data length] + 2) / 3) * 4);    if (characters == NULL)      return nil;    NSUInteger length = 0;    NSUInteger i = 0;    while (i < [data length])    {      char buffer[3] = {0,0,0};      short bufferLength = 0;      while (bufferLength < 3 && i < [data length])        buffer[bufferLength++] = ((charchar *)[data bytes])[i++];      // Encode the bytes in the buffer to four characters, including padding "=" characters if necessary.      characters[length++] = encodingTable[(buffer[0] & 0xFC) >> 2];      characters[length++] = encodingTable[((buffer[0] & 0x03) << 4) | ((buffer[1] & 0xF0) >> 4)];      if (bufferLength > 1)        characters[length++] = encodingTable[((buffer[1] & 0x0F) << 2) | ((buffer[2] & 0xC0) >> 6)];      else characters[length++] = '=';      if (bufferLength > 2)        characters[length++] = encodingTable[buffer[2] & 0x3F];      else characters[length++] = '=';    }    return [[NSString alloc] initWithBytesNoCopy:characters length:length encoding:NSASCIIStringEncoding freeWhenDone:YES];  }  @end  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黄色www| 欧美特级www| 孩xxxx性bbbb欧美| www.日韩欧美| 国产亚洲精品va在线观看| 色中色综合影院手机版在线观看| 日韩精品在线影院| 92看片淫黄大片看国产片| 久久久精品国产网站| 欧美日韩成人精品| 国产精品视频久| 色噜噜国产精品视频一区二区| 欧美一区二区三区精品电影| 日韩在线激情视频| 欧美性猛交xxxx乱大交蜜桃| 久久99久久99精品中文字幕| 91免费版网站入口| 欧美日韩亚洲视频一区| 国产在线拍偷自揄拍精品| 亚洲91精品在线| 欧美黑人xxx| 国产精品永久免费在线| 日韩网站在线观看| 成人国产精品av| 国产午夜精品全部视频在线播放| 国产精品久久久久aaaa九色| 欧美色视频日本高清在线观看| 久久精品亚洲精品| 精品美女久久久久久免费| 国产精品视频白浆免费视频| 国产精品久久久久久av福利| 日韩一级裸体免费视频| 亚洲天堂av在线免费观看| 综合网中文字幕| 国产91精品久| 国模私拍视频一区| 亚洲美女性视频| 国产成人av网址| 91精品国产综合久久香蕉922| 国产精品v片在线观看不卡| 欧美裸体xxxx极品少妇软件| 亚洲激情在线观看视频免费| 久久久999精品| 国模极品一区二区三区| 日韩免费av在线| 91精品在线一区| 成人激情av在线| 欧美一级大胆视频| 色综合91久久精品中文字幕| 久久影院资源网| 国产精品亚洲第一区| 欧美精品在线免费观看| 国产欧美一区二区三区在线| 国产精品7m视频| 久久亚洲综合国产精品99麻豆精品福利| 国产午夜精品免费一区二区三区| 欧美性生交xxxxx久久久| 欧美大片大片在线播放| 亚洲免费视频观看| 亚洲最新av在线| 精品久久久久久久久久久久久| 久久成人精品视频| 欧美成人亚洲成人日韩成人| 国产精品成人国产乱一区| 亚洲网站在线播放| 亚洲新声在线观看| 人人澡人人澡人人看欧美| 欧美亚洲一区在线| 欧美激情综合亚洲一二区| 日韩av男人的天堂| 日韩av电影手机在线| 欧美限制级电影在线观看| 亚洲男人天堂九九视频| 91成人免费观看网站| 欧美性理论片在线观看片免费| 91精品久久久久久久久| 亚洲欧美中文日韩v在线观看| 丁香五六月婷婷久久激情| 91高清在线免费观看| 亚洲美女自拍视频| 精品国内产的精品视频在线观看| 午夜精品福利视频| 2019亚洲男人天堂| 日韩在线观看av| 精品亚洲男同gayvideo网站| 国产精品网站视频| 国产欧美日韩专区发布| 亚洲美女精品久久| 久久久久日韩精品久久久男男| 91高清视频在线免费观看| 精品久久久久久久久久久| 久久综合五月天| 中文欧美在线视频| 亚洲精品91美女久久久久久久| 日本亚洲精品在线观看| 国产999精品视频| 亚洲小视频在线| 久久久久久久久久久免费精品| 91黑丝高跟在线| 夜夜嗨av色综合久久久综合网| 欧美亚洲国产日韩2020| 亚洲激情在线观看视频免费| 国产欧美精品在线播放| 精品久久久av| 8050国产精品久久久久久| 国产精品人人做人人爽| 正在播放欧美视频| 亚洲精品成人久久| 久久国产精品网站| 在线视频免费一区二区| 日韩av理论片| 2019国产精品自在线拍国产不卡| 最近2019好看的中文字幕免费| 日韩有码视频在线| 欧美一性一乱一交一视频| 欧美激情一二三| 丝袜情趣国产精品| 欧美成人自拍视频| 日韩av免费在线播放| 91久久综合亚洲鲁鲁五月天| 久久久av网站| 亚洲va久久久噜噜噜| 亚洲国产精品成人一区二区| 午夜精品久久久久久99热| 国产精品美女网站| 亚洲精品国精品久久99热一| 日本免费久久高清视频| 成人黄色免费网站在线观看| 91国产视频在线播放| 国产精品日韩久久久久| 欧美成人午夜影院| 亚洲性视频网址| 欧美极品少妇xxxxⅹ裸体艺术| 中文字幕精品网| 亚洲精品永久免费精品| 亚洲变态欧美另类捆绑| 国产亚洲在线播放| 日韩**中文字幕毛片| 综合欧美国产视频二区| 精品久久久精品| 欧美高清在线视频观看不卡| 欧美区在线播放| 国产精品入口免费视频一| 国产精品视频中文字幕91| 欧美精品在线观看| 国产精品久久久久久久久久ktv| 欧美最顶级的aⅴ艳星| 国产精品9999| 欧美华人在线视频| 日韩中文字幕免费视频| 国产亚洲一区二区在线| 夜夜嗨av一区二区三区免费区| 8x海外华人永久免费日韩内陆视频| 成人中文字幕在线观看| 亚洲视频欧洲视频| 亚洲一区二区国产| 亚洲精品小视频在线观看| 国产日产欧美a一级在线| 国产成人在线亚洲欧美| 免费97视频在线精品国自产拍| 成人在线一区二区| 中文精品99久久国产香蕉| 亚洲天堂av综合网| 色综久久综合桃花网|