sha-1 加密

引入文件


@interface SignatrueEncryption : NSObject


//通过SHA-1加密算法,得到用户的合法签名
+ (NSMutableDictionary *)encryptedParamsWithBaseParams:(NSMutableDictionary *)paramsDictionary;

@end


#import "SignatrueEncryption.h"
#import <CommonCrypto/CommonDigest.h>
#import "CommonDefine.h"

@implementation SignatrueEncryption

+ (NSMutableDictionary *)encryptedParamsWithBaseParams:(NSMutableDictionary *)paramsDictionary
{
    NSMutableString *signatrueString = [NSMutableString stringWithString:kAPP_KEY];
//    NSMutableString *paramsString = [NSMutableString stringWithFormat:@"appkey=%@", kAPP_KEY];
    //将参数字典排序
    NSArray *sortedParamsDictionaryKeys = [[paramsDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)];
    for (NSString *oneKey in sortedParamsDictionaryKeys) {
        [signatrueString appendFormat:@"%@%@", oneKey, [paramsDictionary objectForKey:oneKey]];
    }
    //将secret串拼接在末尾 747364472category火锅city北京has_coupon1limit20region海淀区sort25257689458624870a3f25fb2f742b37c
    
    [signatrueString appendString:kAPP_SECRET];
    [signatrueString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //进行SHA-1加密计算
    unsigned char digest[CC_SHA1_DIGEST_LENGTH];
    NSData *signatrueBytes = [signatrueString dataUsingEncoding:NSUTF8StringEncoding];
    if (CC_SHA1([signatrueBytes bytes], (int)[signatrueBytes length], digest)) {
        NSMutableString *digestedString = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH];
        for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
            unsigned char signleCharacter = digest[i];
            //转成16进制的字符串,注意格式%02X,X 表示以十六进制形式输出 02 表示不足两位,前面补0输出
            [digestedString appendFormat:@"%02X", signleCharacter];
        }
        //045018701D3E341C38C4BC703495C1F031594FBB
        NSMutableDictionary *newParamsDictionary = [NSMutableDictionary dictionaryWithDictionary:paramsDictionary];
        [newParamsDictionary setObject:digestedString forKey:@"sign"];
        return newParamsDictionary;
    } else {
        return nil;
    }
}

@end


使用:

// 创建字典加密
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:keyStr,@"cats", nil];
    NSDictionary *encodeDict = [SignatrueEncryption encryptedParamsWithBaseParams:dict];
    
    // xCode7淘汰(只对 `#%^{}[]|\"<> 加空格共14个字符编码,不包括”&?”等符号), ios9将淘汰)
    //    NSString *catType = [encodeDict[@"cats"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    // 建议使用的方法
    NSString *catType = [encodeDict[@"cats"] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    
    // 搜索时用这个URL
    NSString *urlString = [NSString stringWithFormat:@"http://3fggh.ibhai.com/ret/v3/vities?&page_size=20&cur_page=%ld&sort=0&keywords=%@&device_type=2&app_version=4.4.0&is_recent=0&api_version=1&city=%ld",(long)currentPage,catType,(long)_currentCityID];
   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值