如何对中文字符串 进行 sha1加密

#import <Foundation/Foundation.h>


@interface UseSha : NSObject

+(UseSha *)getinstance:(NSDictionary*)dic resultStr:(NSString**)strPath;

-(id)init;

@end


#import "UseSha.h"

#import <CommonCrypto/CommonDigest.h>

static UseSha* _instance;

@implementation UseSha


- (id) init{

    if (self = [super init]){

       _instance = [[UseSha alloc] init];

    }

    

    return self;

}


+(UseSha *)getinstance:(NSDictionary *)dic resultStr:(NSString**)strPath

{

    NSArray* arr = [dic allKeys];

    arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){

        NSComparisonResult result = [obj1 compare:obj2];

        return result==NSOrderedDescending;

    }];

    NSMutableString *str = [NSMutableString new];

    for (NSString *key in arr) {

        [str appendString:key];

        [str appendString:dic[key]];

    }

    NSLog(@"%@",str);

    NSArray *shaArray=@[@"abc",str,@"abc"];

    NSString*shaStr=[shaArray componentsJoinedByString:@""];

    NSLog(@"shaStr:%@",shaStr);

    if (shaStr!=nil) {

//        const char *cstr = [shaStr cStringUsingEncoding:NSUTF8StringEncoding];

//        NSData *data = [NSData dataWithBytes:cstr length:shaStr.length];//原先有中文的时候错误

        NSData *data = [shaStr dataUsingEncoding:NSUTF8StringEncoding];//处理含有中文的成功

        

        uint8_t digest[CC_SHA1_DIGEST_LENGTH];

        //uint8_t digest[CC_SHA256_DIGEST_LENGTH];

        CC_SHA1(data.bytes, data.length, digest);

        

        NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];

        

        for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {

            //[result appendFormat:@"%02x", digest[i]];//默认是小写

            [result appendFormat:@"%02X", digest[i]];//大写

        }


        *strPath=result;

        NSLog(@"strPath:%@",*strPath);

    }

    

    return _instance;

}


//sha1加密方式

+(NSString *)getSha1String:(NSString *)srcString{

    NSArray *shaArray=@[@"abc",srcString,@"abc"];

    NSString*shaStr=[shaArray componentsJoinedByString:@""];

    const char *cstr = [shaStr cStringUsingEncoding:NSUTF8StringEncoding];

    NSData *data = [NSData dataWithBytes:cstr length:shaStr.length];

    

    uint8_t digest[CC_SHA1_DIGEST_LENGTH];

    

    CC_SHA1(data.bytes, data.length, digest);

    

    NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];

    

    for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {

        //[result appendFormat:@"%02x", digest[i]];//默认是小写

        [result appendFormat:@"%02X", digest[i]];//大写

    }

    NSLog(@"result:%@",result);

    return result;

}


//- (NSString *) sha1_base64

//{

//    const char *cstr =[self cStringUsingEncoding:NSUTF8StringEncoding];

//    NSData *data = [NSData dataWithBytes:cstr length:self.length];

//    

//    uint8_t digest[CC_SHA1_DIGEST_LENGTH];

//    

//    CC_SHA1(data.bytes, data.length, digest);

//    

//    NSData * base64 = [[NSData alloc]initWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];

//    base64 = [GTMBase64 encodeData:base64];

//    

//    NSString * output = [[NSString alloc] initWithData:base64 encoding:NSUTF8StringEncoding];

//    return output;

//}


@end




    if ([SingModelInstance ActivityAreaId].length>0) {

        NSDictionary *dic=@{@"method":@"aop.goods.queryGoodsList",@"v":@"1.0",@"format":@"JSON",@"type":@"2",@"appKey":@"002",@"currentPage":mNum,@"rowCountPerPage":@"10",@"memberId":[KuserModel uid],@"goodType":@"2",@"opsCode":[SingModelInstance ActivityAreaId],@"categoryId":[SingModelInstance ActivityAreaId],@"blockType":@"1"};

        NSString*resultStr;

        [UseSha getinstance:dic resultStr:&resultStr];

        if (resultStr!=nil) {

            NSDictionary *dic1=@{@"method":@"aop.goods.queryGoodsList",@"appKey":@"002",@"v":@"1.0",@"format":@"JSON",@"type":@"2",@"sign":resultStr,@"currentPage":mNum,@"rowCountPerPage":@"10",@"memberId":[KuserModel uid],@"goodType":@"2",@"opsCode":[SingModelInstance ActivityAreaId],@"categoryId":[SingModelInstance ActivityAreaId],@"blockType":@"1"};

            [proLisCon requestProductListWithDic:dic1 withTag:tag];

        }

    }


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值