我正在尝试为 iOS 找到与此功能等效的功能:
hash('sha512', '123', true);
这是我正在使用的方法,相当于:hash('sha512', '123', false);
- (NSString *)sha512{
NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(data.bytes, data.length, digest);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++)
{
[output appendFormat:@"%02x", digest[i]];
}
return output;
}
我怎样才能让它给我原始输出?
最佳答案
如果您想要 NSData 输出(它是原始字节的包装器:
//每个 OP 请求的 NSString
类别
- (NSData *)sha512 {
NSData *dataIn = [self dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA512_DIGEST_LENGTH];
CC_SHA512( dataIn.bytes,
(CC_LONG)dataIn.length,
macOut.mutableBytes);
return macOut;
}
测试:
NSData *sha512Data = [@"123" sha512];
NSLog(@"sha512Data: %@", sha512Data);
输出(以十六进制显示,因为这就是 NSData 显示其字节的方式:
sha512Data: <3c9909af ec25354d 551dae21 590bb26e 38d53f21 73b8d3dc 3eee4c04 7e7ab1c1 eb8b8510 3e3be7ba 613b31bb 5c9c3621 4dc9f14a 42fd7a2f db84856b ca5c44c2>
如果需要指向字节的指针,只需使用sha512Data.bytes
。
关于php - 相当于 PHP 函数 hash() 以及 iOS 的原始输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31941921/