// // 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 #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