使用Base64编解码

来源:互联网 发布:凯里欧文数据 编辑:程序博客网 时间:2024/05/24 00:49
96 
才寒 关注
2016.07.21 16:33* 字数 101 阅读 1861评论 0

iOS之后,NSData新增一个类别用于加密解密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:

    // 字符串转Data    NSString *str = @"encode string";    // 字符串转成Data    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];// 13 bytes    // 加密Data    NSData *encodeData = [data base64EncodedDataWithOptions:0];// 20 bytes    // 解密Data    NSData *decodeData = [[NSData alloc] initWithBase64EncodedData:encodeData options:0];// 13 bytes    // Data转字符串    NSString *decodeStr = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];    NSLog(@"%@",decodeStr);// encode string

以上的方法是通用方法,不过考虑到开发者使用NSData加密解密NSString比较多,苹果提供了更直接的API加密解密NSString:

    // 字符串转Data并且加密    NSData *data = [[NSData alloc] initWithBase64EncodedString:@"encode string" options:0];    // Data解密并且转字符串    NSString *decodeStr = [data base64EncodedStringWithOptions:0];    NSLog(@"%@",decodeStr);// encode string

加密解密UIImage:

    UIImage *img = [UIImage imageNamed:@"image.jpg"];    // 图片转Data    NSData *data = UIImageJPEGRepresentation(img, 0.7);    // 加密Data    NSData *encodeData = [data base64EncodedDataWithOptions:0];    // 解密Data    NSData *decodeData = [[NSData alloc] initWithBase64EncodedData:encodeData options:0];    // Data转图片    UIImage *decodeImg = [UIImage imageWithData:decodeData];

总结:
加密解密是只有NSData才能穿上脱下的隐身斗篷。

原创粉丝点击