iOS中base64加密解密是针对NSData类型的:
加密:
可以将NSData类型加密成NSData类型和NSString类型
解密:
可以将NSData类型和NSString类型密文解密成NSData类型
@interface NSData (NSDataBase64Encoding)
/* Create an NSData from a Base-64 encoded NSString using the given options. By default, returns nil when the input is not recognized as valid Base-64.
*/
- (nullable instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);
/* Create a Base-64 encoded NSString from the receiver's contents using the given options.
*/
- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);
/* Create an NSData from a Base-64, UTF-8 encoded NSData. By default, returns nil when the input is not recognized as valid Base-64.
*/
- (nullable instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);
/* Create a Base-64, UTF-8 encoded NSData from the receiver's contents using the given options.
*/
- (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);
@end
例子:
NSString * string = @"abcdefghijklmnopqrstuvwxyz";
NSLog(@"原始字符:%@", string);
//先转换成NSData类型再加密
NSData * stringData = [string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", stringData);
//加密成 NSData 类型
NSData * encodeToData = [stringData base64EncodedDataWithOptions:0];
NSLog(@"加密成 NSData 类型:%@", encodeToData);
//解密 NSData
NSData * decodeData = [[NSData alloc] initWithBase64EncodedData:encodeToData options:0];
NSLog(@"%@", decodeData);
//转换成NSString
NSString * decodeString = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];
NSLog(@"%@", decodeString);
//加密成 NSString 类型
NSString * encodeToString = [stringData base64EncodedStringWithOptions:0];
NSLog(@"加密成 NSString 类型:%@", encodeToString);
NSData * decodeToData = [[NSData alloc] initWithBase64EncodedString:encodeToString options:0];
NSLog(@"解密成 NSData 类型:%@", decodeToData);
输出:
2016-04-20 16:34:37.273 base64-encode-decode[16333:6269374] 原始字符:abcdefghijklmnopqrstuvwxyz
2016-04-20 16:34:37.273 base64-encode-decode[16333:6269374] <61626364 65666768 696a6b6c 6d6e6f70 71727374 75767778 797a>
2016-04-20 16:34:37.274 base64-encode-decode[16333:6269374] 加密成 NSData 类型:<59574a6a 5a47566d 5a326870 616d7473 62573576 63484679 63335231 646e6434 65586f3d>
2016-04-20 16:34:37.274 base64-encode-decode[16333:6269374] <61626364 65666768 696a6b6c 6d6e6f70 71727374 75767778 797a>
2016-04-20 16:34:37.274 base64-encode-decode[16333:6269374] abcdefghijklmnopqrstuvwxyz
2016-04-20 16:34:37.274 base64-encode-decode[16333:6269374] 加密成 NSString 类型:YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=
2016-04-20 16:34:37.274 base64-encode-decode[16333:6269374] 解密成 NSData 类型:<61626364 65666768 696a6b6c 6d6e6f70 71727374 75767778 797a>
这里只是说明基本用法,其它暂不深究