帶百分號加密
A. http ftp 中的%(百分號)是什麼意思
是網路語言,大概是查找范圍的意思
B. iOS加密2——Base64(蘋果支持)
1、由於某些系統中只能使用ASCII字元。Base64就是用來將非ASCII字元的數據轉換成ASCII字元的一種方法。
Base64編碼使用和urlencode比較
base64:
1、包含A-Z a-z 0-9 和加號「+」,斜杠「/」 用來作為開始的64個數字. 等號「=」用來作為後綴用途。
2、2進制的.
3、要比源數據多33%。
4、常用於郵件。
urlencode:將除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號(+)
請求參數傳輸使用base64,而不是使用urlencode,為什麼?
1、部分因為base64編碼後參數就不可讀,而url編碼英文部分是不變的
2、為了兼容網路上的一些很古老的設備, 這些古董設備只能識別 base64編碼的字元
3、因為 urlencode 對二進制數據的效率不高,base64 會有效降低 %xx 的出現次數。
注釋 :
1、url請求中,只對參數進行base64編碼,不是對整個url進行base64編碼。
2、在url請求時,會對url整體進行urlencode編碼。
NSString *str = @"hello world"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; NSData *base64Data = [data base64EncodedDataWithOptions:0];
NSString *path = @"/Users/apple/Desktop/1.png"; NSData *data = [NSData dataWithContentsOfFile:path]; NSData *base64Data = [data base64EncodedDataWithOptions:0]; [base64Data writeToFile:@"/Users/apple/Desktop/base64" atomically:YES];
NSString *base64Str = [data :0]; NSLog(@"base64Str: %@",base64Str); NSLog(@"%@ %ld base64Data: %@ %ld",data,data.length,base64Data,base64Data.length);
NSData *endata = [[NSData alloc] initWithBase64EncodedData:base64Data options:0]; [endata writeToFile:@"/Users/apple/Desktop/123.png2" atomically:YES]; UIImage *image = [UIImage imageWithData:endata]; NSLog(@"%@",image);
和MD5一樣我們採取封裝的辦法將base64封裝進了MySecurities這個類中
MySecurities.h 文件
#import <Foundation/Foundation.h> @interface MySecurities : NSObject +(NSString *)base64EncodingWithData:(NSData *)sourceData;//base64加密 +(id)base64EncodingWithString:(NSString *)sourceString;//base64解密 @end
base64加密
@implementation MySecurities +(NSString *)base64EncodingWithData:(NSData *)sourceData{ if (!sourceData) { //如果sourceData則返回nil,不進行加密。 return nil; } NSString *resultString = [sourceData : ]; return resultString; } ***base64解密*** +(id)base64EncodingWithString:(NSString *)sourceString{ if (!sourceString) { return nil;//如果sourceString則返回nil,不進行解密。 } NSData *resultData = [[NSData alloc]initWithBase64EncodedString:sourceString options:]; return resultData; } @end