首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C:用密码实现Sha512加密(3)

C:用密码实现Sha512加密(3)
EN

Stack Overflow用户
提问于 2013-11-18 21:49:00
回答 1查看 1.3K关注 0票数 1

正如标题所述,我想用C函数crypt(3)实现一个简单的Sha512加密。

我几乎抄袭了GNU的例子,尽管我知道盐的计算不是很好。另外,我将$1$改为$6$,因为密码的管理说明这将创建一个SHA512哈希。

无论如何,输出对我来说似乎很奇怪,所以我在问我的代码是否有什么问题:

这是一个基本的功能:

代码语言:javascript
复制
static char* hashStr(char *str) {
    unsigned long seed[2];
    char salt[] = "$6$........";
    const char *const seedchars =
    "./0123456789ABCDEFGHIJKLMNOPQRST"
    "UVWXYZabcdefghijklmnopqrstuvwxyz";

    seed[0] = time(NULL);
    seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000);

    // Turn it into printable characters from `seedchars'.
    for (int i = 0; i < 8; i++) {
        salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f];
    }
    return crypt(str, salt);
}

以下是一些输出:

代码语言:javascript
复制
Bro  -> $6$9AcWGmwG$5faOmA7QpXQ/MMmbFAT085HraONeaMYlTcBg09WmQUpSI.PkcrcDQiXCetyjuIK3sr3H5cIFyxHD.fywr9UfY/

Homie -> $6$BAcWGnwG$KUPLOdpa8QgF.cVljBXYl62lL9zejDW/ZWENUoC90jO4NinNc1Itk7Z1Zo3myogmHR/YPwoc2cqfjBL0cf.Ht0

hey -> $6$IAcWGowG$47WGhO6Hco9DOc0rnxu/KEttLvjv4wH6vJX8qj6hALr0Wa1/YQb0JETEcRgpe9.cPvwOBjQduLZn17gwSXM86.  

是什么让我怀疑产出是否合法?尤其是在每次开始的时候都有这个&6。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-18 22:43:50

如您所见,这里 crypt(3)返回:

代码语言:javascript
复制
$id$salt$encrypted

这就是为什么你得到了$6$8chars$...

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

https://stackoverflow.com/questions/20058656

复制
相关文章

相似问题

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