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