【发布时间】:2019-02-02 19:57:35
【问题描述】:
我正在搜索的是 crypt(3) 函数的解密函数。阅读手册他们只让我看到login(1), passwd(1), encrypt(3), getpass(3), passwd(5),但据我所知,它们都不能用来解密字符串。
我一起写了一个小程序来说明我的观点,我要找的函数是somefunctogetbackplaintext(...)
#define _XOPEN_SOURCE
#include <unistd.h>
#include <string.h>
#include <stdio.h>
int
main(int argc, char *argv[])
{
char *cryptated = crypt(argv[1], "aa"); // Password and salt
if(strcmp("somepassword", somefunctogetbackplaintext(argv[1], cryptated, "aa"))) //Plain text, cryptated string, salt
{
printf("Success!\n");
}
else
{
printf("Not a success!\n");
}
return 0;
}
【问题讨论】:
-
是什么让您认为密码实际上可以被解密?通常的密码机制不需要那个。其实我相信这个想法是他们不能被解密。
-
我很确定 crypt 是一种单向哈希,就像 MD5 一样。
-
您已正确阅读文档 - 非[e] 可用于解密字符串
-
@Salviati - 是的,这就是密码等通常的实现方式。散列,因此不可解密。
-
@ForceBru 传统
crypt使用密码作为 56 位 DES 密钥并使用它来加密全零块。它不加密密码本身。