⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;reden&nbsp;(Offer&nbsp;快快来啊&nbsp;~!),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Linux程式设计入门&nbsp;-&nbsp;crypt&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Apr&nbsp;&nbsp;1&nbsp;19:56:43&nbsp;1999)&nbsp;<BR>&nbsp;<BR>Linux程式设计入门&nbsp;-&nbsp;crypt&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;crypt是个密码加密函数,它是基於Data&nbsp;Encryption&nbsp;Standard(DES)演算法。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;crypt基本上是One&nbsp;way&nbsp;encryption,因此它只适用於密码的使用,不适合於资&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;料加密。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;char&nbsp;*crypt(const&nbsp;char&nbsp;*key,&nbsp;const&nbsp;char&nbsp;*salt);&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;key是使用者的密码。salt是两个字,每个字可从[a-zA-Z0-9./]中选出来,因&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;此同一密码增加了4096种可能性。透过使用key中每个字的低七位元,取得&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;56-bit关键字,这56-bit关键字被用来加密成一组字,这组字有13个可显示的&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;ASCII字,包含开头两个salt。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;crypt在您有自行管理使用者的场合时使用,例如会员网站、BBS等等。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;范例一&nbsp;:&nbsp;&nbsp;crypt_word.c&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;#include&nbsp;&lt;stdio.h&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;#include&nbsp;&lt;stdlib.h&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;#include&nbsp;&lt;unistd.h&gt;&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;void&nbsp;main(int&nbsp;argc,char&nbsp;**argv)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(argc!=3)&nbsp;exit(0);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;%s\n&quot;,crypt(argv[1],argv[2]));&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;编译&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;gcc&nbsp;-o&nbsp;crypt_word&nbsp;crypt.c&nbsp;-lcrypt&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;检验&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;请先看您的/etc/passwd,找一个您自己的帐号,看前面两个字,那是您自己的&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;salt。接下来输入:&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;./crypt_word&nbsp;your_password&nbsp;salt&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;看看它们是否相同(应该要相同,除非您加了crypt&nbsp;plugin或使用不同的crypt&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;function,例如shadow、pam,这种状况下,加密字是不同的),另外检验看看&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;他们是否为13个字。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;您也可以利用Apache上所附的htpasswd来产生加密字做为验证。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;范例二:&nbsp;verify_passwd.c&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;注意,这个范例读取/etc/passwd的资料,不适用於使用shadow或已经使用pam&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;的系统(例如slackware,RedHat及Debian在不外加crypt&nbsp;plugin的状况下,应&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;当相同)。此范例仅供叁考,做为了解crypt函数运作的情形,真正撰写程式&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;时,应该避免类似的写法。&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;#include&nbsp;&lt;stdio.h&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;#include&nbsp;&lt;stdlib.h&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;#include&nbsp;&lt;unistd.h&gt;&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;typedef&nbsp;struct&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;username[64];&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;passwd[16];&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;uid;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;gid;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name[256];&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;root[256];&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;shell[256];&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;account;&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;注意!&nbsp;以下的写法,真实世界的软体开发状况下,千万不要用!&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;int&nbsp;acc_info(char&nbsp;*info,account&nbsp;*user)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*&nbsp;start&nbsp;=&nbsp;info;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*&nbsp;now&nbsp;=&nbsp;info;&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;username&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*now&amp;&amp;*now!=':')&nbsp;now++;&nbsp;/*&nbsp;这是超级大安全漏洞&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!*now)&nbsp;return&nbsp;0;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*now&nbsp;=&nbsp;0;&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(user-&gt;username,start);&nbsp;/*&nbsp;这会导致buffer&nbsp;overflow&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;=&nbsp;now;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;passwd&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*now&amp;&amp;*now!=':')&nbsp;now++;&nbsp;/*&nbsp;这是超级大安全漏洞&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!*now)&nbsp;return&nbsp;0;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*now&nbsp;=&nbsp;0;&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(user-&gt;passwd,start);&nbsp;/*&nbsp;这会导致buffer&nbsp;overflow&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;=&nbsp;now;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;uid&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*now&amp;&amp;*now!=':')&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!*now)&nbsp;return&nbsp;0;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*now&nbsp;=&nbsp;0;&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;user-&gt;uid&nbsp;=&nbsp;atoi(start);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;=&nbsp;now;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;gid&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*now&amp;&amp;*now!=':')&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!*now)&nbsp;return&nbsp;0;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*now&nbsp;=&nbsp;0;&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;user-&gt;gid&nbsp;=&nbsp;atoi(start);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;=&nbsp;now;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;name&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*now&amp;&amp;*now!=':')&nbsp;now++;&nbsp;/*&nbsp;这是超级大安全漏洞&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!*now)&nbsp;return&nbsp;0;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*now&nbsp;=&nbsp;0;&nbsp;now++;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(user-&gt;name,start);&nbsp;/*&nbsp;这会导致buffer&nbsp;overflow&nbsp;*/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;=&nbsp;now;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -