首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SHA512加盐用于iOS

SHA512加盐用于iOS
EN

Stack Overflow用户
提问于 2013-09-17 20:08:58
回答 3查看 1.4K关注 0票数 1

嗨,有没有人有一个工作的SHA512 iOS实现?这些代码似乎不像我在php上生成的代码那样。

代码语言:javascript
复制
<?php

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

263fec58861449aacc1c328a4aff64aff4c62df4a2d50b3f207fa89b6e242c9aa778e7a8baeffef85b6ca6d2e7dc16ff0a760d59c13c238f6bcdc32f8ce9cc62 输出:

代码语言:javascript
复制
- (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;

}

代码语言:javascript
复制
[self sha512:@"123" withSalt:@"123"];

3cafe40f92be6ac77d2792b4b267c2da11e3f3087b93bb19c6c5133786984b44 输出:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-17 20:44:07

您的代码有两个问题:

  1. 您的ObjC代码似乎正在计算SHA512 HMAC,而您的PHP代码正在计算SHA512 散列,即2 different beasts。据我所知,对应的PHP代码应该如下所示: Hash_hmac(‘123 512’,'123','123‘);
  2. 上面的输出仍然比ObjC代码长得多,即: 0634fd04380bbaf5069c8c46a74c7d21df7414888d980c27a16d5e262cb8c9059139c212d0926000faf026e483904cefae2f5e9d9bd5f51fbc2ac4c4de518115 它有128个字符,512位长,表面上是SHA512函数的预期长度。
票数 2
EN

Stack Overflow用户

发布于 2013-09-17 20:34:09

您在iOS上使用HMAC,您需要使用SHA和连接"123“和"123”,就像对php一样。HMAC不只是连接密钥和数据。

用途:#import <CommonCrypto/CommonDigest.h>

extern unsigned char *CC_SHA512(const void *data, CC_LONG len, unsigned char *md)

票数 3
EN

Stack Overflow用户

发布于 2013-09-17 22:31:46

编辑了php代码:

代码语言:javascript
复制
hash_hmac('SHA512', '123',  '123' );

这解决了问题。谢谢!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18859005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档