2025-12-04 20:27:26 +08:00
|
|
|
|
//
|
|
|
|
|
|
// KBSignUtils.h
|
|
|
|
|
|
// keyBoard
|
|
|
|
|
|
//
|
|
|
|
|
|
// Created by Mac on 2025/12/4.
|
|
|
|
|
|
//
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
|
|
|
|
@interface KBSignUtils : NSObject
|
|
|
|
|
|
|
|
|
|
|
|
/// URL 编码(与后端保持一致)
|
|
|
|
|
|
+ (NSString *)urlEncode:(NSString *)value;
|
|
|
|
|
|
|
|
|
|
|
|
/// HMAC-SHA256,返回十六进制小写字符串
|
|
|
|
|
|
+ (NSString *)hmacSHA256:(NSString *)data secret:(NSString *)secret;
|
|
|
|
|
|
|
|
|
|
|
|
/// 生成签名:传入参与签名的所有参数(不含 sign 自身)
|
|
|
|
|
|
+ (NSString *)signWithParams:(NSDictionary<NSString *, NSString *> *)params
|
|
|
|
|
|
secret:(NSString *)secret;
|
|
|
|
|
|
|
2026-02-03 20:22:28 +08:00
|
|
|
|
/// 获取签名原始拼接字符串(HMAC 前的明文)
|
|
|
|
|
|
+ (NSString *)signSourceStringWithParams:(NSDictionary<NSString *, NSString *> *)params
|
|
|
|
|
|
secret:(NSString *)secret;
|
|
|
|
|
|
|
2025-12-04 20:27:26 +08:00
|
|
|
|
/// 秒级时间戳(字符串)
|
|
|
|
|
|
+ (NSString *)currentTimestamp;
|
|
|
|
|
|
|
|
|
|
|
|
/// 简单 nonce 生成(默认 16 位)
|
|
|
|
|
|
+ (NSString *)generateNonceWithLength:(NSUInteger)length;
|
|
|
|
|
|
|
2026-02-24 14:59:06 +08:00
|
|
|
|
/// 生成本项目后端约定的签名请求头(X-Sign/X-App-Id/X-Timestamp/X-Nonce)。
|
|
|
|
|
|
/// bodyParams:参与签名的业务参数(如 JSON body 字段)。内部会做类型容错与空值过滤。
|
|
|
|
|
|
+ (NSDictionary<NSString *, NSString *> *)signHeadersWithBodyParams:(nullable NSDictionary *)bodyParams;
|
|
|
|
|
|
|
2025-12-04 20:27:26 +08:00
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|