当前位置: 技术问答>linux和unix
***一个简单的系统登录程序的问题...
来源: 互联网 发布时间:2015-11-11
本文导语: 小弟写一个简单的程序,只要用户输入登录用户名和口令,然后和/etc/shadow里的加密口令对比看看是否一样就行了 我知道可以用crypt函数,但这个函数的 salt参数是用户名的头两个字符吗?为什么我这样调用: crypt(acc...
小弟写一个简单的程序,只要用户输入登录用户名和口令,然后和/etc/shadow里的加密口令对比看看是否一样就行了
我知道可以用crypt函数,但这个函数的 salt参数是用户名的头两个字符吗?为什么我这样调用:
crypt(acc,s); //acc是指向用户名的字符串, s是那个用户名的头两个字符
这样输出的加密密码只有13位而且和shadow文件里的不一致阿。。。
是不是因为系统是suse10的缘故?suse10用的是BlowFish加密。。。那应该调用什么函数可以得到口令的单向加密呀??
还有,使用阴影口令的系统里的getpwnam函数返回的passwd结构还有利用价值吗?
我这样的程序为什么一运行就报Segmentation fault呢???
struct passwd *loginpw;
... (用户输入用户名)
loginpw = getpwnam(acc); //运行到这里就Segmentation fault了
我用的APUE上的实现和系统自带的getpwnam实现都是这样。。。
急盼高手解答上面两个问题亚!!!!!!
我知道可以用crypt函数,但这个函数的 salt参数是用户名的头两个字符吗?为什么我这样调用:
crypt(acc,s); //acc是指向用户名的字符串, s是那个用户名的头两个字符
这样输出的加密密码只有13位而且和shadow文件里的不一致阿。。。
是不是因为系统是suse10的缘故?suse10用的是BlowFish加密。。。那应该调用什么函数可以得到口令的单向加密呀??
还有,使用阴影口令的系统里的getpwnam函数返回的passwd结构还有利用价值吗?
我这样的程序为什么一运行就报Segmentation fault呢???
struct passwd *loginpw;
... (用户输入用户名)
loginpw = getpwnam(acc); //运行到这里就Segmentation fault了
我用的APUE上的实现和系统自带的getpwnam实现都是这样。。。
急盼高手解答上面两个问题亚!!!!!!
|
wwx兄,想不到在csdn上还能见到你, 幸会幸会.
1. 关于crypt, 先要调用getspnam得到一个swdp结构, crypt的第二个参数应该是sp->sp_swdp.
2. loginpw = getpwnam(acc)段错误;是否是权限的问题.
1. 关于crypt, 先要调用getspnam得到一个swdp结构, crypt的第二个参数应该是sp->sp_swdp.
2. loginpw = getpwnam(acc)段错误;是否是权限的问题.