我使用以下函数创建了字符串的 SHA256 编码,
const char *s=[@"123456" cStringUsingEncoding:NSASCIIStringEncoding];
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
CC_SHA256(keyData.bytes, keyData.length, digest);
NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
NSString *hash=[out description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"Hash : %@", hash);
它给了我输出:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92。
但我需要以下输出:jZae727K08KaOmKSgOaGzww/XVqGr/PKEgIMkjrcbJI=。这是base64。
如何将生成的“hex”哈希转换为“base64”?
我曾使用此网站生成 base64 哈希值:http://www.online-convert.com/result/7bd4c809756b3c16cf9d1939b1e57584 http://www.online-convert.com/result/7bd4c809756b3c16cf9d1939b1e57584
你不应该转换NSString *hash
您根据 base-64 的描述生成的。它是一个十六进制字符串,而不是实际的数据字节。
你应该直接从NSData *out
使用任何可用的 Base-64 编码器转换为 Base-64 字符串。例如,您可以从下载一个实现这个帖子 http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html,并按如下方式使用它:
const char *s=[@"123456" cStringUsingEncoding:NSASCIIStringEncoding];
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
CC_SHA256(keyData.bytes, keyData.length, digest);
NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
// The method below is added in the NSData+Base64 category from the download
NSString *base64 =[out base64EncodedString];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)