php - 相当于 PHP 函数 hash() 以及 iOS 的原始输出

标签 php objective-c hash sha512

我正在尝试为 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/

相关文章:

objective-c - 使用反射/内省(introspection)调用参数数量未知的选择器

ios - 使用 UIImages 创建 gif

c++ - 使用 Crypto++ FileSource 以 block 的形式散列文件

c++ - std::hash 用于 std::chrono::duration

php - 在 php 中用 ' 替换每个 '

php - preg_replace() 根据出现顺序通过增量变量替换相同的字符串

php - 我可以从 Flash 文件动态生成 300 dpi 图像吗?

php - 无法从 mysql 数组中找到特定元素

objective-c - 给私有(private)方法和属性添加前缀

Ruby - 如何将大型多维哈希数组转换为 CSV 格式