SHA512用于iOS的盐 [英] SHA512 with salt for iOS

查看:277
本文介绍了SHA512用于iOS的盐的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人有工作的SHA512 iOS实现?代码似乎没有生成与php相同的代码。

 <?php 

$ code = hash(SHA512,'123'。'123');
echo $ code;
?>

输出:
263fec58861449aacc1c328a4aff64aff4c62df4a2d50b3f207fa89b6e242c9aa778e7a8baeffef85b6ca6d2e7dc16ff0a760d59c13c238f6bcdc32f8ce9cc62

   - (NSString *)sha512:(NSString *)输入withSalt:(NSString *)salt {


const char * cKey = [salt cStringUsingEncoding:NSUTF8StringEncoding];
const char * data = [input cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char digest [CC_SHA512_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA512,cKey,strlen(cKey),data,strlen(data),digest);

NSString *哈希;

NSMutableString * output = [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];

for(int i = 0; i< CC_SHA512_DIGEST_LENGTH; i ++)
[输出appendFormat:@%02x,摘要[i]];
hash = output;
返回哈希;

}

  [self sha512:@123withSalt:@123]; 

输出:
3cafe40f92be6ac77d2792b4b267c2da11e3f3087b93bb19c6c5133786984b44

解决方案

您的代码有两个问题:


  1. ObjC代码似乎正在计算SHA512 HMAC ,您的PHP代码正在计算一个SHA512 哈希,它们是 2种不同的野兽。据我所知(这不远),相应的PHP代码应该是这样的:

      hash_hmac('SHA512' '123','123'); 


  2. 上述的输出还远远超过ObjC代码,即: p>

      0634fd04380bbaf5069c8c46a74c7d21df7414888d980c27a16d5e262cb8c9059139c212d0926000faf026e483904cefae2f5e9d9bd5f51fbc2ac4c4de518115 

    长度为128个字符[512位],表面上来自SHA512功能的预期长度



Hi is there anyone with a working SHA512 iOS implementation? The code doesn't seem to generate the same one I have on php.

<?php

$code =  hash("SHA512", '123' . '123' );
echo $code;
?>

Output: 263fec58861449aacc1c328a4aff64aff4c62df4a2d50b3f207fa89b6e242c9aa778e7a8baeffef85b6ca6d2e7dc16ff0a760d59c13c238f6bcdc32f8ce9cc62

- (NSString *) sha512:(NSString *) input withSalt: (NSString *) salt {


const char *cKey  = [salt cStringUsingEncoding:NSUTF8StringEncoding];
const char *data = [input cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char digest[CC_SHA512_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA512, cKey, strlen(cKey), data, strlen(data), digest);

NSString *hash;

NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];

for(int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++)
    [output appendFormat:@"%02x", digest[i]];
hash = output;
return hash;

}

[self sha512:@"123" withSalt:@"123"];

Output: 3cafe40f92be6ac77d2792b4b267c2da11e3f3087b93bb19c6c5133786984b44

解决方案

Your code has two problems:

  1. Your ObjC code appears to be calculating a SHA512 HMAC and your PHP code is calculating a SHA512 hash which are 2 different beasts. As far as I know [which is not far] the corresponding PHP code should be something like:

    hash_hmac('SHA512', '123',  '123' );
    

  2. The output for the above is still much longer that the ObjC code, ie:

    0634fd04380bbaf5069c8c46a74c7d21df7414888d980c27a16d5e262cb8c9059139c212d0926000faf026e483904cefae2f5e9d9bd5f51fbc2ac4c4de518115
    

    Which is 128 characters [512 bits] long and ostensibly the expected length from SHA512 function.

这篇关于SHA512用于iOS的盐的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆