You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
311 lines
6.8 KiB
311 lines
6.8 KiB
1 year ago
|
//
|
||
|
// NSData+YYAdd.h
|
||
|
// YYKit <https://github.com/ibireme/YYKit>
|
||
|
//
|
||
|
// Created by ibireme on 13/4/4.
|
||
|
// Copyright (c) 2015 ibireme.
|
||
|
//
|
||
|
// This source code is licensed under the MIT-style license found in the
|
||
|
// LICENSE file in the root directory of this source tree.
|
||
|
//
|
||
|
|
||
|
#import <Foundation/Foundation.h>
|
||
|
|
||
|
NS_ASSUME_NONNULL_BEGIN
|
||
|
|
||
|
/**
|
||
|
Provide hash, encrypt, encode and some common method for `NSData`.
|
||
|
*/
|
||
|
@interface NSData (YYAdd)
|
||
|
|
||
|
#pragma mark - Hash
|
||
|
///=============================================================================
|
||
|
/// @name Hash
|
||
|
///=============================================================================
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for md2 hash.
|
||
|
*/
|
||
|
- (NSString *)md2String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for md2 hash.
|
||
|
*/
|
||
|
- (NSData *)md2Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for md4 hash.
|
||
|
*/
|
||
|
- (NSString *)md4String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for md4 hash.
|
||
|
*/
|
||
|
- (NSData *)md4Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for md5 hash.
|
||
|
*/
|
||
|
- (NSString *)md5String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for md5 hash.
|
||
|
*/
|
||
|
- (NSData *)md5Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for sha1 hash.
|
||
|
*/
|
||
|
- (NSString *)sha1String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for sha1 hash.
|
||
|
*/
|
||
|
- (NSData *)sha1Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for sha224 hash.
|
||
|
*/
|
||
|
- (NSString *)sha224String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for sha224 hash.
|
||
|
*/
|
||
|
- (NSData *)sha224Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for sha256 hash.
|
||
|
*/
|
||
|
- (NSString *)sha256String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for sha256 hash.
|
||
|
*/
|
||
|
- (NSData *)sha256Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for sha384 hash.
|
||
|
*/
|
||
|
- (NSString *)sha384String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for sha384 hash.
|
||
|
*/
|
||
|
- (NSData *)sha384Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for sha512 hash.
|
||
|
*/
|
||
|
- (NSString *)sha512String;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for sha512 hash.
|
||
|
*/
|
||
|
- (NSData *)sha512Data;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for hmac using algorithm md5 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSString *)hmacMD5StringWithKey:(NSString *)key;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for hmac using algorithm md5 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSData *)hmacMD5DataWithKey:(NSData *)key;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for hmac using algorithm sha1 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSString *)hmacSHA1StringWithKey:(NSString *)key;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for hmac using algorithm sha1 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSData *)hmacSHA1DataWithKey:(NSData *)key;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for hmac using algorithm sha224 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSString *)hmacSHA224StringWithKey:(NSString *)key;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for hmac using algorithm sha224 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSData *)hmacSHA224DataWithKey:(NSData *)key;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for hmac using algorithm sha256 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSString *)hmacSHA256StringWithKey:(NSString *)key;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for hmac using algorithm sha256 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSData *)hmacSHA256DataWithKey:(NSData *)key;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for hmac using algorithm sha384 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSString *)hmacSHA384StringWithKey:(NSString *)key;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for hmac using algorithm sha384 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSData *)hmacSHA384DataWithKey:(NSData *)key;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for hmac using algorithm sha512 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSString *)hmacSHA512StringWithKey:(NSString *)key;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData for hmac using algorithm sha512 with key.
|
||
|
@param key The hmac key.
|
||
|
*/
|
||
|
- (NSData *)hmacSHA512DataWithKey:(NSData *)key;
|
||
|
|
||
|
/**
|
||
|
Returns a lowercase NSString for crc32 hash.
|
||
|
*/
|
||
|
- (NSString *)crc32String;
|
||
|
|
||
|
/**
|
||
|
Returns crc32 hash.
|
||
|
*/
|
||
|
- (uint32_t)crc32;
|
||
|
|
||
|
|
||
|
#pragma mark - Encrypt and Decrypt
|
||
|
///=============================================================================
|
||
|
/// @name Encrypt and Decrypt
|
||
|
///=============================================================================
|
||
|
|
||
|
/**
|
||
|
Returns an encrypted NSData using AES.
|
||
|
|
||
|
@param key A key length of 16, 24 or 32 (128, 192 or 256bits).
|
||
|
|
||
|
@param iv An initialization vector length of 16(128bits).
|
||
|
Pass nil when you don't want to use iv.
|
||
|
|
||
|
@return An NSData encrypted, or nil if an error occurs.
|
||
|
*/
|
||
|
- (nullable NSData *)aes256EncryptWithKey:(NSData *)key iv:(nullable NSData *)iv;
|
||
|
|
||
|
/**
|
||
|
Returns an decrypted NSData using AES.
|
||
|
|
||
|
@param key A key length of 16, 24 or 32 (128, 192 or 256bits).
|
||
|
|
||
|
@param iv An initialization vector length of 16(128bits).
|
||
|
Pass nil when you don't want to use iv.
|
||
|
|
||
|
@return An NSData decrypted, or nil if an error occurs.
|
||
|
*/
|
||
|
- (nullable NSData *)aes256DecryptWithkey:(NSData *)key iv:(nullable NSData *)iv;
|
||
|
|
||
|
|
||
|
#pragma mark - Encode and decode
|
||
|
///=============================================================================
|
||
|
/// @name Encode and decode
|
||
|
///=============================================================================
|
||
|
|
||
|
/**
|
||
|
Returns string decoded in UTF8.
|
||
|
*/
|
||
|
- (nullable NSString *)utf8String;
|
||
|
|
||
|
/**
|
||
|
Returns a uppercase NSString in HEX.
|
||
|
*/
|
||
|
- (nullable NSString *)hexString;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData from hex string.
|
||
|
|
||
|
@param hexString The hex string which is case insensitive.
|
||
|
|
||
|
@return a new NSData, or nil if an error occurs.
|
||
|
*/
|
||
|
+ (nullable NSData *)dataWithHexString:(NSString *)hexString;
|
||
|
|
||
|
/**
|
||
|
Returns an NSString for base64 encoded.
|
||
|
*/
|
||
|
- (nullable NSString *)base64EncodedString;
|
||
|
|
||
|
/**
|
||
|
Returns an NSData from base64 encoded string.
|
||
|
|
||
|
@warning This method has been implemented in iOS7.
|
||
|
|
||
|
@param base64EncodedString The encoded string.
|
||
|
*/
|
||
|
+ (nullable NSData *)dataWithBase64EncodedString:(NSString *)base64EncodedString;
|
||
|
|
||
|
/**
|
||
|
Returns an NSDictionary or NSArray for decoded self.
|
||
|
Returns nil if an error occurs.
|
||
|
*/
|
||
|
- (nullable id)jsonValueDecoded;
|
||
|
|
||
|
|
||
|
#pragma mark - Inflate and deflate
|
||
|
///=============================================================================
|
||
|
/// @name Inflate and deflate
|
||
|
///=============================================================================
|
||
|
|
||
|
/**
|
||
|
Decompress data from gzip data.
|
||
|
@return Inflated data.
|
||
|
*/
|
||
|
- (nullable NSData *)gzipInflate;
|
||
|
|
||
|
/**
|
||
|
Comperss data to gzip in default compresssion level.
|
||
|
@return Deflated data.
|
||
|
*/
|
||
|
- (nullable NSData *)gzipDeflate;
|
||
|
|
||
|
/**
|
||
|
Decompress data from zlib-compressed data.
|
||
|
@return Inflated data.
|
||
|
*/
|
||
|
- (nullable NSData *)zlibInflate;
|
||
|
|
||
|
/**
|
||
|
Comperss data to zlib-compressed in default compresssion level.
|
||
|
@return Deflated data.
|
||
|
*/
|
||
|
- (nullable NSData *)zlibDeflate;
|
||
|
|
||
|
|
||
|
#pragma mark - Others
|
||
|
///=============================================================================
|
||
|
/// @name Others
|
||
|
///=============================================================================
|
||
|
|
||
|
/**
|
||
|
Create data from the file in main bundle (similar to [UIImage imageNamed:]).
|
||
|
|
||
|
@param name The file name (in main bundle).
|
||
|
|
||
|
@return A new data create from the file.
|
||
|
*/
|
||
|
+ (nullable NSData *)dataNamed:(NSString *)name;
|
||
|
|
||
|
@end
|
||
|
|
||
|
NS_ASSUME_NONNULL_END
|