objective-c - 为什么我们iOS加密出来的和安卓加密出来的不同?

 开卷_汤娅造_673 发布于 2022-10-25 07:10

安卓加密出来的是[B@42a6f4d8 我们iOS加密出来的是6132896cb90f07ff8f5313990324016816d54f6b

还有

baseStr = [[NSString alloc] initWithData:[QNUrlSafeBase64 decodeString:HIMAStr] encoding:NSUTF8StringEncoding]; [QNUrlSafeBase64 decodeString:HIMAStr]是有值的 但是返回出来却是nil这是为什么呀?这是我的代码 请大神们指点下!感激不尽!!!

1 个回答
  • 运气好,正好最近也用到七牛:

    - (NSString *)genToken
    {
        static NSUInteger expireTime = 0;
        static NSString *cachedSign = nil;
        NSUInteger now = (NSUInteger)[NSDate date].timeIntervalSince1970;
        if (now > expireTime) {
            expireTime = now + 3600 - 60;
            NSDictionary *policy = @{
                                     @"scope": _bucket,
                                     @"deadline": @(expireTime + 60),
                                     @"returnBody": @"{\"key\":$(key),\"name\":$(fname),\"size\":$(fsize),\"w\":$(imageInfo.width),\"h\":$(imageInfo.height),\"hash\":$(etag)}"
                                     };
            NSString *encodedPolicy = [[NSJSONSerialization dataWithJSONObject:policy
                                                                       options:0
                                                                         error:NULL] base64EncodedStringWithOptions:0];
            encodedPolicy = [encodedPolicy stringByReplacingOccurrencesOfString:@"+" withString:@"-"];
            encodedPolicy = [encodedPolicy stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
    
            const char *text = [encodedPolicy cStringUsingEncoding:NSASCIIStringEncoding];
            const char *key = [_secretKey cStringUsingEncoding:NSASCIIStringEncoding];
            char cHMAC[CC_SHA1_DIGEST_LENGTH];
            CCHmac(kCCHmacAlgSHA1, key, strlen(key), text, strlen(text), cHMAC);
    
            NSString *sign = [[NSString alloc] initWithData:[NSData dataWithBytes:cHMAC
                                                                           length:sizeof(cHMAC)]
                                                   encoding:NSASCIIStringEncoding];
            NSString *encodedSign = sign.toBase64String;
            encodedSign = [encodedSign stringByReplacingOccurrencesOfString:@"+" withString:@"-"];
            encodedSign = [encodedSign stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
    
            cachedSign = [NSString stringWithFormat:@"%@:%@:%@", _accessKey, encodedSign, encodedPolicy];
        }
        return cachedSign;
    }
    2022-10-26 14:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有