我在C中找不到用“SHA-512”加密字符串的示例。 有人可以帮我一些代码或链接。 提前谢谢。
答案 0 :(得分:13)
SHA-512不是加密算法,它是cryptographic hash,完全不同。
您可以用来执行SHA哈希的一个库是OpenSSL。下面是使用OpenSSL计算某些数据的原始SHA-512哈希的示例:
#include <openssl/sha.h>
...
char data[] = "data to hash";
char hash[SHA512_DIGEST_LENGTH];
SHA512(data, sizeof(data) - 1, hash);
// 'hash' now contains the raw 64-byte binary hash. If you want to print it out
// in a human-readable format, you'll need to convert it to hex, e.g.
答案 1 :(得分:6)
您可以使用GLib来解决此问题,请注意G_CHECKSUM_SHA512,可能需要您安装较新版本的GLib,请访问:https://developer.gnome.org/glib/stable/glib-Data-Checksums.html
#include <glib.h>
#include <string.h>
int
main(void)
{
char *string = "Hello World";
gchar *sha512;
sha512 = g_compute_checksum_for_string(G_CHECKSUM_SHA512, string, strlen(string));
g_print("%s\n", sha512);
g_free(sha512);
return 0;
}
编译
$ gcc -o sha512 sha512.c `pkg-config --cflags --libs glib-2.0`
答案 2 :(得分:5)
如果您想使用SHA-512存储密码,请考虑使用“salt”值来使彩虹表攻击更难。例如,“12345678”将是一个随机字符串。 “$ 6 $”标志着SHA-512:
#include <crypt.h>
#include <stdio.h>
int main() {
char *hash = crypt("secret", "$6$12345678");
printf("hashed=%s\n", hash);
}