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.
120 lines
3.2 KiB
120 lines
3.2 KiB
//
|
|
// BioAuthCryptoManager.hpp
|
|
// BioAuthEngine
|
|
//
|
|
// Created by yukun.tyk on 5/16/16.
|
|
// Copyright © 2016 DTF. All rights reserved.
|
|
//
|
|
|
|
#ifndef BioAuthCryptoManager_hpp
|
|
#define BioAuthCryptoManager_hpp
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#include <stdio.h>
|
|
#import <functional>
|
|
#import <Foundation/NSData.h>
|
|
#import <Foundation/NSString.h>
|
|
|
|
namespace DTF {
|
|
|
|
/**
|
|
* 业务加密结果回调
|
|
*
|
|
* @param success: 加密是否成功
|
|
* @param cipher: 密文
|
|
* @param encryptedKey: RSA公钥加密的AES密钥
|
|
*/
|
|
typedef std::function<void(bool, NSData *, NSData *)> completionCallback;
|
|
|
|
class ToygerCryptoManager{
|
|
public:
|
|
/**
|
|
* 1. 随机生成128位AES私钥
|
|
* 2. 利用ASE私钥加密业务数据
|
|
* 3. 利用RSA公钥加密AES密钥
|
|
*
|
|
* @param content 代价密数据
|
|
* @param pubKey RSA公钥
|
|
* @param callback 加密成功后callback
|
|
*/
|
|
static void mixEncrypt(NSData *content, NSString *pubKey, completionCallback callback);
|
|
|
|
/**
|
|
* AES加密
|
|
*
|
|
* @param content 业务数据
|
|
* @param aesKey AES密钥
|
|
*
|
|
* @return 密文,失败则返回Nil
|
|
*/
|
|
static NSData *AESEncrypt(NSData *content, NSString *aesKey ,NSUInteger value=0);
|
|
|
|
//获取md5值
|
|
static NSString *MD5WithData(NSData *data);
|
|
/**
|
|
* AES解密
|
|
*
|
|
* @param content 业务数据
|
|
* @param aesKey AES密钥
|
|
*
|
|
* @return 解密后数据,失败则返回Nil
|
|
*/
|
|
static NSData *AESDecrypt(NSData *content, NSString *aesKey);
|
|
|
|
/**
|
|
* 1024位RSA加密
|
|
*
|
|
* @param content 待加密数据,不得超过128位
|
|
* @param pubKey RSA公钥
|
|
*
|
|
* @return 密文,失败返回nil
|
|
*/
|
|
static NSData *RSAEncrypt(NSData *content, NSString *pubKey);
|
|
|
|
/**
|
|
* 检查数据签名
|
|
*
|
|
* @param content 业务数据
|
|
* @param signature 签名信息
|
|
* @param pubKey RSA公钥
|
|
*
|
|
* @return 签名是够正确
|
|
*/
|
|
static BOOL checkSign(NSData *content, NSData *signature, NSString *pubKey);
|
|
|
|
/**
|
|
* 计算MD5
|
|
*
|
|
* @param str 业务数据
|
|
*
|
|
* @return MD5值
|
|
*/
|
|
static NSString *calculateMD5(NSString *str);
|
|
|
|
/**
|
|
* 生成UUID
|
|
*/
|
|
static NSString *generateUUID();
|
|
|
|
// /**
|
|
// * RC4编码
|
|
// */
|
|
// static NSData *RC4Crypt(NSData *data, int code);
|
|
|
|
// private:
|
|
/**
|
|
* 生成随机字符串
|
|
*
|
|
* @param len 随机字符串长度,最长32个字节
|
|
*
|
|
* @return 生成的随机字符串
|
|
*/
|
|
static NSString *generateToken(NSInteger len);
|
|
|
|
private:
|
|
static NSData *stripPublicKeyHeader(NSData *pubKey);
|
|
static SecKeyRef addPublicKey(NSString *pubKey);
|
|
};
|
|
}
|
|
|
|
#endif /* BioAuthCryptoManager_hpp */
|