我用 c 和以下代码编写了一个 pam 模块,导致我的 pam 将其吐出。
sudo:pam_authenticate:模块未知
我正在尝试获取字符串的 md5 哈希值。
char *str2md5(const char *str, int length) {
int n;
MD5_CTX c;
unsigned char digest[16];
char *out = (char*)malloc(33);
MD5_Init(&c);
while (length > 0) {
if (length > 512) {
MD5_Update(&c, str, 512);
} else {
MD5_Update(&c, str, length);
}
length -= 512;
str += 512;
}
MD5_Final(digest, &c);
for (n = 0; n < 16; ++n) {
snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);
}
return out;
}
如果我这样评论它就可以了
char *str2md5(const char *str, int length) {
int n;
MD5_CTX c;
/*unsigned char digest[16];
char *out = (char*)malloc(33);
MD5_Init(&c);
while (length > 0) {
if (length > 512) {
MD5_Update(&c, str, 512);
} else {
MD5_Update(&c, str, length);
}
length -= 512;
str += 512;
}
MD5_Final(digest, &c);
for (n = 0; n < 16; ++n) {
snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);
}
return out;*/
}
我注释掉代码,我得到了这个..
DEBUG: 08217239
Authentication Code: 08217239
[sudo] password for richardw:
尽管我为什么在使用 pam 时尝试获取 md5 哈希是微不足道的,但我正在做一些事情,出于某种原因 pam 不喜欢。有人知道解决方法吗?