//
|
// GTMBase64.h
|
//
|
// Copyright 2006-2008 Google Inc.
|
//
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
// use this file except in compliance with the License. You may obtain a copy
|
// of the License at
|
//
|
// GitHub地址 https://github.com/penghero/PGGCrypto.git
|
//
|
// Unless required by applicable law or agreed to in writing, software
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
// License for the specific language governing permissions and limitations under
|
// the License.
|
//
|
/*
|
Base64加密方式
|
|
Base64是一种加密方法,可逆的加密。
|
|
Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符。/ + 填充 =
|
|
echo -n BC|base64
|
|
base64 ABC -o 123.txt
|
|
base64 -D 123.txt -o uio.txt
|
|
Base64 iOS7之后加入系统库里的
|
|
类方法加锁,对象方法解密
|
|
1) 字符串转化为base64字符串
|
|
NSString * string = @"ABC";
|
|
NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
|
|
NSString * base64String = [data
|
base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
|
NSLog(@"%@",base64String);
|
|
2)加密后的data转化成加密前的字符串
|
//将普通的data转化为加密后的data
|
|
NSData * base64Data = [data base64EncodedDataWithOptions:0];
|
|
//加密后的Data转换为普通data
|
|
NSData * data2 = [[NSData alloc] initWithBase64EncodedData:base64Data options:0];
|
|
NSString * string2 = [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding];
|
|
NSLog(@"%@",string2);
|
|
3)加密图片
|
|
UIImage * image = [UIImage imageNamed:@"111"];
|
|
NSData * data = UIImagePNGRepresentation(image);
|
|
NSString * base64String = [data base64EncodedStringWithOptions:0];
|
|
//解密图片
|
|
NSData * decodeData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
|
|
UIImage * decodeImage = [[UIImage alloc] initWithData:decodeData];
|
*/
|
|
#import <Foundation/Foundation.h>
|
#import "GTMDefines.h"
|
|
// GTMBase64
|
//
|
/// Helper for handling Base64 and WebSafeBase64 encodings
|
//
|
/// The webSafe methods use different character set and also the results aren't
|
/// always padded to a multiple of 4 characters. This is done so the resulting
|
/// data can be used in urls and url query arguments without needing any
|
/// encoding. You must use the webSafe* methods together, the data does not
|
/// interop with the RFC methods.
|
//
|
@interface GTMBase64 : NSObject
|
|
//
|
// Standard Base64 (RFC) handling
|
//
|
|
// encodeData:
|
//
|
/// Base64 encodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)encodeData:(NSData *)data;
|
|
// decodeData:
|
//
|
/// Base64 decodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)decodeData:(NSData *)data;
|
|
// encodeBytes:length:
|
//
|
/// Base64 encodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// decodeBytes:length:
|
//
|
/// Base64 decodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// stringByEncodingData:
|
//
|
/// Base64 encodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByEncodingData:(NSData *)data;
|
|
// stringByEncodingBytes:length:
|
//
|
/// Base64 encodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// decodeString:
|
//
|
/// Base64 decodes contents of the NSString.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)decodeString:(NSString *)string;
|
|
//
|
// Modified Base64 encoding so the results can go onto urls.
|
//
|
// The changes are in the characters generated and also allows the result to
|
// not be padded to a multiple of 4.
|
// Must use the matching call to encode/decode, won't interop with the
|
// RFC versions.
|
//
|
|
// webSafeEncodeData:padded:
|
//
|
/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)webSafeEncodeData:(NSData *)data
|
padded:(BOOL)padded;
|
|
// webSafeDecodeData:
|
//
|
/// WebSafe Base64 decodes contents of the NSData object.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)webSafeDecodeData:(NSData *)data;
|
|
// webSafeEncodeBytes:length:padded:
|
//
|
/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)webSafeEncodeBytes:(const void *)bytes
|
length:(NSUInteger)length
|
padded:(BOOL)padded;
|
|
// webSafeDecodeBytes:length:
|
//
|
/// WebSafe Base64 decodes the data pointed at by |bytes|.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the encoded payload. nil for any error.
|
//
|
+(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length;
|
|
// stringByWebSafeEncodingData:padded:
|
//
|
/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByWebSafeEncodingData:(NSData *)data
|
padded:(BOOL)padded;
|
|
// stringByWebSafeEncodingBytes:length:padded:
|
//
|
/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES
|
/// then padding characters are added so the result length is a multiple of 4.
|
//
|
/// Returns:
|
/// A new autoreleased NSString with the encoded payload. nil for any error.
|
//
|
+(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
|
length:(NSUInteger)length
|
padded:(BOOL)padded;
|
|
// webSafeDecodeString:
|
//
|
/// WebSafe Base64 decodes contents of the NSString.
|
//
|
/// Returns:
|
/// A new autoreleased NSData with the decoded payload. nil for any error.
|
//
|
+(NSData *)webSafeDecodeString:(NSString *)string;
|
|
@end
|