JXSecurityUtil.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // JXSecurityUtil.h
  3. // shiku_im
  4. //
  5. // Created by p on 2019/7/10.
  6. // Copyright © 2019 Reese. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. @interface JXSecurityUtil : NSObject
  11. @property (nonatomic, strong) NSString *privateAesStr;
  12. @property (nonatomic) SecKeyRef publicKeyRef;
  13. @property (nonatomic) SecKeyRef privateKeyRef;
  14. @property (nonatomic, strong) NSString *privateAesStrDH;
  15. @property (nonatomic) SecKeyRef publicKeyRefDH;
  16. @property (nonatomic) SecKeyRef privateKeyRefDH;
  17. + (instancetype)sharedManager;
  18. #pragma mark ---------RSA---------
  19. // RSA生成秘钥对
  20. - (void)generateKeyPairRSA;
  21. // RSA获取私钥
  22. - (SecKeyRef)getRSAPrivateKey;
  23. // RSA根据私钥获取公钥
  24. - (SecKeyRef)getRSAPublicKeyWithPrivateKey:(SecKeyRef)privateKey;
  25. // 获取公钥base64
  26. - (NSString *)getRSAPublicKeyAsBase64;
  27. // 获取私钥base64
  28. - (NSString *)getRSAPrivateKeyAsBase64;
  29. //根据base64字符串获取秘钥
  30. - (SecKeyRef)getRSAKeyWithBase64Str:(NSString *)base64Str isPrivateKey:(BOOL)isPrivateKey;
  31. // 公钥转换成JAVA可用的base64
  32. - (NSString *)getRSAPublicKeyAsBase64ForJavaServer;
  33. // 根据通用的key 转换为iOS秘钥base64字符串
  34. - (NSString *)getKeyForJavaServer:(NSData*)keyBits;
  35. // JAVA可用base64秘钥字符串转iOS秘钥字符串
  36. - (NSString *)getPublicKeyFromJavaServer:(NSString *)keyAsBase64;
  37. // 将key转data
  38. - (NSData *)getKeyBitsFromKey:(SecKeyRef)Key;
  39. // RSA加密
  40. - (NSData *)encryptMessageRSA:(NSData *)msgData;
  41. - (NSData *)encryptMessageRSA:(NSData *)msgData withPublicKey:(SecKeyRef)publicKey;
  42. // RSA解密
  43. - (NSData *)decryptMessageRSA:(NSData *)msgData;
  44. - (NSData *)decryptMessageRSA:(NSData *)msgData withPrivateKey:(SecKeyRef)privateKey;
  45. // 获取签名
  46. - (NSString *)getSignWithRSA:(NSString *)string withPriKey:(SecKeyRef)priKey;
  47. #pragma mark ---------DH---------
  48. // DH生成秘钥对
  49. - (void)generateKeyPairDH;
  50. // DH获取私钥
  51. - (SecKeyRef)getDHPrivateKey;
  52. // DH根据私钥获取公钥
  53. - (SecKeyRef)getDHPublicKeyWithPrivateKey;
  54. // 获取共享秘钥
  55. - (NSData *) getSharedWithPrivateKey:(SecKeyRef)privateKey publicKey:(SecKeyRef)publicKey;
  56. // 获取公钥base64
  57. - (NSString *)getDHPublicKeyAsBase64;
  58. // 获取私钥base64
  59. - (NSString *)getDHPrivateKeyAsBase64;
  60. //根据base64字符串获取秘钥
  61. - (SecKeyRef)getDHKeyWithBase64Str:(NSString *)base64Str isPrivateKey:(BOOL)isPrivateKey;
  62. // 公钥转换成JAVA可用的base64
  63. - (NSString *)getDHPublicKeyAsBase64ForJavaServer;
  64. // 获取mac值(HMACMD5算法)
  65. - (NSData *)getHMACMD5:(NSData *)data key:(NSData *)keyData;
  66. @end
  67. NS_ASSUME_NONNULL_END