美文网首页
ios ~ 参数按ASCii码 字母顺序排序

ios ~ 参数按ASCii码 字母顺序排序

作者: 阳光下的叶子呵 | 来源:发表于2021-11-18 17:00 被阅读0次
1、接口参数添加token例子:
    NSArray *keyArray = [dic allKeys]; // 将dic中的全部key取出,并放到数组
    
    // 根据ASCII码,将参数key从小到大排序(升序)
    NSStringCompareOptions comparisonOptions =NSCaseInsensitiveSearch|NSNumericSearch|NSWidthInsensitiveSearch|NSForcedOrderingSearch;
    NSComparator sort = ^(NSString *obj1, NSString *obj2) {
        NSRange range = NSMakeRange(0, obj1.length);
        return [obj1 compare:obj2 options:comparisonOptions range:range];
    };
    NSArray *resultArr = [keyArray sortedArrayUsingComparator:sort];
//    NSLog(@"字符串数组排序结果%@",resultArr);
    
    NSMutableArray *paramValueArr = [NSMutableArray arrayWithCapacity:resultArr.count];
    for (NSString *str in resultArr) {
        // 将key对应的value,存到数组
        NSString *tokenStr = [dic objectForKey:[NSString stringWithFormat:@"%@", str]];
        if (tokenStr.length > 0) {
            [paramValueArr addObject:tokenStr];
        }
    }
    
//    NSLog(@"字符串数组Value排序结果%@",paramValueArr);
    NSString *token = [paramValueArr componentsJoinedByString:@"Holle"];
    token = [JXUtilTool md5HexDigest:token]; // MD5加密
2、MD5解密:

代码:

+(NSString *)md5HexDigest:(NSString *)input{
    const char* str = [input UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(str, (CC_LONG)strlen(str), result);
    NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
    
    for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [ret appendFormat:@"%02x",result[i]];//%02意思是不足两位将用0补齐,如果多于两位则不影响,小写x表示输出小写,大写X表示输出大写
    }
    return ret;
}
/*** MD5 ***/

#define CC_MD5_DIGEST_LENGTH    16          /* digest length in bytes */
#define CC_MD5_BLOCK_BYTES      64          /* block size in bytes */
#define CC_MD5_BLOCK_LONG       (CC_MD5_BLOCK_BYTES / sizeof(CC_LONG))

typedef struct CC_MD5state_st
{
    CC_LONG A,B,C,D;
    CC_LONG Nl,Nh;
    CC_LONG data[CC_MD5_BLOCK_LONG];
    int num;
} CC_MD5_CTX;

extern int CC_MD5_Init(CC_MD5_CTX *c)
API_DEPRECATED(CC_DIGEST_DEPRECATION_WARNING, macos(10.4, 10.15), ios(2.0, 13.0));
    
extern int CC_MD5_Update(CC_MD5_CTX *c, const void *data, CC_LONG len)
API_DEPRECATED(CC_DIGEST_DEPRECATION_WARNING, macos(10.4, 10.15), ios(2.0, 13.0));
    
extern int CC_MD5_Final(unsigned char *md, CC_MD5_CTX *c)
API_DEPRECATED(CC_DIGEST_DEPRECATION_WARNING, macos(10.4, 10.15), ios(2.0, 13.0));

extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)
API_DEPRECATED(CC_DIGEST_DEPRECATION_WARNING, macos(10.4, 10.15), ios(2.0, 13.0));

相关文章

网友评论

      本文标题:ios ~ 参数按ASCii码 字母顺序排序

      本文链接:https://www.haomeiwen.com/subject/fjodtrtx.html