MOBFData.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. //
  2. // MOBFDataUtils.h
  3. // MOBFoundation
  4. //
  5. // Created by vimfung on 15-1-16.
  6. // Copyright (c) 2015年 MOB. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <CommonCrypto/CommonCrypto.h>
  10. #import <zlib.h>
  11. /**
  12. * 数据工具类
  13. */
  14. @interface MOBFData : NSObject
  15. /**
  16. * 使用HMAC-SHA1进行加密
  17. *
  18. * @param data 原始数据
  19. * @param key 密钥
  20. *
  21. * @return 加密后数据
  22. */
  23. + (NSData *)hmacSha1Data:(NSData *)data forKey:(NSData *)key;
  24. /**
  25. 使用HMAC-MD5进行签名
  26. @param data 原始数据
  27. @param key 密钥
  28. @return 加密后数据
  29. */
  30. + (NSData *)hmacMd5Data:(NSData *)data forKey:(NSData *)key;
  31. /**
  32. * 对数据进行MD5签名
  33. *
  34. * @param data 原始数据
  35. *
  36. * @return 签名后数据
  37. */
  38. + (NSData *)md5Data:(NSData *)data;
  39. /**
  40. * 对数据进行AES128加密
  41. *
  42. * @param data 原始数据
  43. * @param key 密钥
  44. * @param encoding 字符串编码
  45. *
  46. * @return 加密后数据
  47. */
  48. + (NSData *)aes128EncryptData:(NSData *)data
  49. key:(NSString *)key
  50. encoding:(NSStringEncoding)encoding;
  51. /**
  52. * 对数据进行AES128解密
  53. *
  54. * @param data 原始数据
  55. * @param key 密钥
  56. * @param encoding 字符串编码
  57. *
  58. * @return 解密后数据
  59. */
  60. + (NSData *)aes128DecryptData:(NSData *)data
  61. key:(NSString *)key
  62. encoding:(NSStringEncoding)encoding;
  63. /**
  64. * 对数据进行AES128加密
  65. *
  66. * @param data 原始数据
  67. * @param key 密钥
  68. * @param options 选项
  69. *
  70. * @return 加密后数据
  71. */
  72. + (NSData *)aes128EncryptData:(NSData *)data
  73. key:(NSData *)key
  74. options:(CCOptions)options;
  75. /**
  76. * 对数据进行AES128解密
  77. *
  78. * @param data 原始数据
  79. * @param key 密钥
  80. * @param options 选项
  81. *
  82. * @return 解密后数据
  83. */
  84. + (NSData *)aes128DecryptData:(NSData *)data
  85. key:(NSData *)key
  86. options:(CCOptions)options;
  87. /**
  88. * 使用GZip压缩数据
  89. *
  90. * @param data 原始数据
  91. *
  92. * @return 压缩后数据
  93. */
  94. + (NSData *)compressDataUsingGZip:(NSData *)data;
  95. /**
  96. * 使用GZip解压缩数据
  97. *
  98. * @param data 原始数据
  99. *
  100. * @return 解压缩后数据
  101. */
  102. + (NSData *)uncompressDataUsingGZip:(NSData *)data;
  103. /**
  104. * 对数据进行MD5签名
  105. *
  106. * @param data 原始数据
  107. *
  108. * @return 签名后字符串
  109. */
  110. + (NSString *)stringByMD5Data:(NSData *)data;
  111. /**
  112. * 使用BASE64编码数据
  113. *
  114. * @param data 原始数据
  115. *
  116. * @return 编码后字符串
  117. */
  118. + (NSString *)stringByBase64EncodeData:(NSData *)data;
  119. /**
  120. * 对数据进行CRC32校验
  121. *
  122. * @param data 数据对象
  123. *
  124. * @return 校验值
  125. */
  126. + (uLong)valueByCRC32Data:(NSData *)data;
  127. /**
  128. * 对数据进行CRC32检验
  129. *
  130. * @param data 原始数据
  131. *
  132. * @return 检验值
  133. */
  134. + (NSString *)stringByCRC32Data:(NSData *)data;
  135. /**
  136. * 将数据转换成16进制字符串
  137. *
  138. * @param data 原始数据
  139. *
  140. * @return 字符串
  141. */
  142. + (NSString *)hexStringByData:(NSData *)data;
  143. /**
  144. * 写入一个32位整数到数据对象中
  145. *
  146. * @param value 整数值
  147. * @param data 数据对象
  148. */
  149. + (void)writeInt32:(int32_t)value toData:(NSMutableData *)data;
  150. /**
  151. * 写入一个16位整数到数据对象中
  152. *
  153. * @param value 整数值
  154. * @param data 数据对象
  155. */
  156. + (void)writeInt16:(int16_t)value toData:(NSMutableData *)data;
  157. /**
  158. * 读取一个16位整数
  159. *
  160. * @param data 数据对象
  161. * @param offset 偏移位置
  162. *
  163. * @return 短整型数据
  164. */
  165. + (int16_t)readInt16FromData:(NSData *)data offset:(NSInteger)offset;
  166. /**
  167. * 读取一个32位整数
  168. *
  169. * @param data 数据对象
  170. * @param offset 偏移位置
  171. *
  172. * @return 整型数据
  173. */
  174. + (int32_t)readInt32FromData:(NSData *)data offset:(NSInteger)offset;
  175. @end