MOBFData.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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. 将一个NSData对象转换为NSString对象,处理由于结束符导致json解析错误问题
  17. @param data 原始data
  18. @return 处理后字符串
  19. */
  20. + (NSString *)stringByData:(NSData *)data;
  21. /**
  22. * 使用HMAC-SHA1进行加密
  23. *
  24. * @param data 原始数据
  25. * @param key 密钥
  26. *
  27. * @return 加密后数据
  28. */
  29. + (NSData *)hmacSha1Data:(NSData *)data forKey:(NSData *)key;
  30. /**
  31. 使用HMAC-MD5进行签名
  32. @param data 原始数据
  33. @param key 密钥
  34. @return 加密后数据
  35. */
  36. + (NSData *)hmacMd5Data:(NSData *)data forKey:(NSData *)key;
  37. /**
  38. * 对数据进行MD5签名
  39. *
  40. * @param data 原始数据
  41. *
  42. * @return 签名后数据
  43. */
  44. + (NSData *)md5Data:(NSData *)data;
  45. /**
  46. * 对数据进行AES128加密
  47. *
  48. * @param data 原始数据
  49. * @param key 密钥
  50. * @param encoding 字符串编码
  51. *
  52. * @return 加密后数据
  53. */
  54. + (NSData *)aes128EncryptData:(NSData *)data
  55. key:(NSString *)key
  56. encoding:(NSStringEncoding)encoding;
  57. /**
  58. * 对数据进行AES128解密
  59. *
  60. * @param data 原始数据
  61. * @param key 密钥
  62. * @param encoding 字符串编码
  63. *
  64. * @return 解密后数据
  65. */
  66. + (NSData *)aes128DecryptData:(NSData *)data
  67. key:(NSString *)key
  68. encoding:(NSStringEncoding)encoding;
  69. /**
  70. * 对数据进行AES128加密
  71. *
  72. * @param data 原始数据
  73. * @param key 密钥
  74. * @param options 选项
  75. *
  76. * @return 加密后数据
  77. */
  78. + (NSData *)aes128EncryptData:(NSData *)data
  79. key:(NSData *)key
  80. options:(CCOptions)options;
  81. /**
  82. * 对数据进行AES128解密
  83. *
  84. * @param data 原始数据
  85. * @param key 密钥
  86. * @param options 选项
  87. *
  88. * @return 解密后数据
  89. */
  90. + (NSData *)aes128DecryptData:(NSData *)data
  91. key:(NSData *)key
  92. options:(CCOptions)options;
  93. /**
  94. * 使用GZip压缩数据
  95. *
  96. * @param data 原始数据
  97. *
  98. * @return 压缩后数据
  99. */
  100. + (NSData *)compressDataUsingGZip:(NSData *)data;
  101. /**
  102. * 使用GZip解压缩数据
  103. *
  104. * @param data 原始数据
  105. *
  106. * @return 解压缩后数据
  107. */
  108. + (NSData *)uncompressDataUsingGZip:(NSData *)data;
  109. /**
  110. * 对数据进行MD5签名
  111. *
  112. * @param data 原始数据
  113. *
  114. * @return 签名后字符串
  115. */
  116. + (NSString *)stringByMD5Data:(NSData *)data;
  117. /**
  118. * 使用BASE64编码数据
  119. *
  120. * @param data 原始数据
  121. *
  122. * @return 编码后字符串
  123. */
  124. + (NSString *)stringByBase64EncodeData:(NSData *)data;
  125. /**
  126. * 对数据进行CRC32校验
  127. *
  128. * @param data 数据对象
  129. *
  130. * @return 校验值
  131. */
  132. + (uLong)valueByCRC32Data:(NSData *)data;
  133. /**
  134. * 对数据进行CRC32检验
  135. *
  136. * @param data 原始数据
  137. *
  138. * @return 检验值
  139. */
  140. + (NSString *)stringByCRC32Data:(NSData *)data;
  141. /**
  142. * 将数据转换成16进制字符串
  143. *
  144. * @param data 原始数据
  145. *
  146. * @return 字符串
  147. */
  148. + (NSString *)hexStringByData:(NSData *)data;
  149. /**
  150. * 写入一个32位整数到数据对象中
  151. *
  152. * @param value 整数值
  153. * @param data 数据对象
  154. */
  155. + (void)writeInt32:(int32_t)value toData:(NSMutableData *)data;
  156. /**
  157. * 写入一个16位整数到数据对象中
  158. *
  159. * @param value 整数值
  160. * @param data 数据对象
  161. */
  162. + (void)writeInt16:(int16_t)value toData:(NSMutableData *)data;
  163. /**
  164. * 读取一个16位整数
  165. *
  166. * @param data 数据对象
  167. * @param offset 偏移位置
  168. *
  169. * @return 短整型数据
  170. */
  171. + (int16_t)readInt16FromData:(NSData *)data offset:(NSInteger)offset;
  172. /**
  173. * 读取一个32位整数
  174. *
  175. * @param data 数据对象
  176. * @param offset 偏移位置
  177. *
  178. * @return 整型数据
  179. */
  180. + (int32_t)readInt32FromData:(NSData *)data offset:(NSInteger)offset;
  181. @end